前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能。做了最后,实现的效果大致如下:
效果图
一、使用方法
整个ViewController的代码大致如下
//// SecondViewController.m// HWPopTool//// Created by HenryCheng on 16/1/11.// Copyright © 2016年 www.igancao.com. All rights reserved.//#import "SecondViewController.h"#import "HWPopTool.h"@interface SecondViewController ()@property (strong, nonatomic) UIView *contentView;@end@implementation SecondViewController- (void)viewDidLoad {
[super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor];
_contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)];
_contentView.backgroundColor = [UIColor clearColor];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 200, 100, 50);
btn.backgroundColor = [UIColor greenColor];
[btn addTarget:self action:@selector(popViewShow) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
- (void)popViewShow { UIImageView *imageV = [[UIImageView alloc]initWithFrame:_contentView.bounds];
imageV.image = [UIImage imageNamed:@"jei"];
[_contentView addSubview:imageV];
[HWPopTool sharedInstance].shadeBackgroundType = ShadeBackgroundTypeSolid;
[HWPopTool sharedInstance].closeButtonType = ButtonPositionTypeRight;
[[HWPopTool sharedInstance] showWithPresentView:_contentView animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end我们引入了HWPopTool.h,并且创建了一个button,点击button的方法是popViewShow,我们来看一下这里面的代码:
- (void)popViewShow { UIImageView *imageV = [[UIImageView alloc]initWithFrame:_contentView.bounds];
imageV.image = [UIImage imageNamed:@"jei"];
[_contentView addSubview:imageV];
[HWPopTool sharedInstance].shadeBackgroundType = ShadeBackgroundTypeSolid;
[HWPopTool sharedInstance].closeButtonType = ButtonPositionTypeRight;
[[HWPopTool sharedInstance] showWithPresentView:_contentView animated:YES];
}这里在_contentView上放了一个imageView,然后我们设置了shadeBackgroundType和closeButtonType以后,下面一句代码就是展示出来popView。
这里主要就是我们弹出一个view,至于这个view多大,上面放什么,都是由你自己决定的。
二、关于HWPopTool里面的一些属性和方法
先来看一下HWPopTool.h
//// HWPopTool.h// HWPopTool//// Created by HenryCheng on 16/1/11.// Copyright © 2016年 www.igancao.com. All rights reserved.//#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>/**
* 关闭按钮的位置
*/typedef NS_ENUM(NSInteger, ButtonPositionType) { /**
* 无
*/
ButtonPositionTypeNone = 0, /**
* 左上角
*/
ButtonPositionTypeLeft = 1 << 0, /**
* 右上角
*/
ButtonPositionTypeRight = 2 << 0};/**
* 蒙板的背景色
*/typedef NS_ENUM(NSInteger, ShadeBackgroundType) { /**
* 渐变色
*/
ShadeBackgroundTypeGradient = 0, /**
* 固定色
*/
ShadeBackgroundTypeSolid = 1 << 0};typedef void(^completeBlock)(void);@interface HWPopTool : NSObject@property (strong, nonatomic) UIColor *popBackgroudColor;//弹出视图的背景色@property (assign, nonatomic) BOOL tapOutsideToDismiss;//点击蒙板是否弹出视图消失@property (assign, nonatomic) ButtonPositionType closeButtonType;//关闭按钮的类型@property (assign, nonatomic) ShadeBackgroundType shadeBackgroundType;//蒙板的背景色/**
* 创建一个实例
*
* @return CHWPopTool
*/+ (HWPopTool *)sharedInstance;/**
* 弹出要展示的View
*
* @param presentView show View
* @param animated 是否动画
*/- (void)showWithPresentView:(UIView *)presentView animated:(BOOL)animated;/**
* 关闭弹出视图
*
* @param complete complete block
*/- (void)closeWithBlcok:(void(^)())complete;@end由于之前写的比较仓促,今天趁着空余时间又把代码整理了一遍,比如关闭之后的回调,之前用delegate实现的,今天又用block重新写的,简洁一点吧,另外基本上所有的方法、属性、枚举我都有注释,算是个个人习惯吧。
这里面有几点需要说明的是:
1.
ShadeBackgroundType是蒙板的背景色属性,有固定的和渐变的(ShadeBackgroundTypeGradient),关于这个渐变,有兴趣的可以研究一下CAGradientLayer,还是很有趣的,在后来的文章中也会说到。2.
tapOutsideToDismiss这个是设置点击蒙板,popView消失不消失的属性,默认的是YES3.
- (void)closeWithBlcok:(void(^)())complete这个方法,是关闭后的回调,比如说发送红包以后,等popView消失以后回到上一页的这种。
由于注释的基本都很清楚了,这里就不多说了,
三、最后
我一般写博客的时候,贴代码喜欢贴全部的代码,我认为这样会直观一点(当然非常多的除外),最后,所有的代码demo都可以在 这里 看到!
作者:HenryCheng
链接:https://www.jianshu.com/p/68b19be19738
共同学习,写下你的评论
评论加载中...
作者其他优质文章
