iOS实现自定义的弹出视图(HWPopTool)
2016-07-16 12:25
543 查看
作者 HenryCheng 关注
2016.01.11 17:39* 字数 879 阅读 10381评论
30喜欢 106
前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能。做了最后,实现的效果大致如下:
效果图
一、使用方法
整个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 recre 4000 ated. } @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消失不消失的属性,默认的是
YES
3.
- (void)closeWithBlcok:(void(^)())complete这个方法,是关闭后的回调,比如说发送红包以后,等
popView消失以后回到上一页的这种。
由于注释的基本都很清楚了,这里就不多说了,
三、最后
我一般写博客的时候,贴代码喜欢贴全部的代码,我认为这样会直观一点(当然非常多的除外),最后,所有的代码demo都可以在 这里 看到!
相关文章推荐
- iOS在线音乐播放SZKAVPlayer(基于AVPlayer的封装)
- xcode 打包 framework 简易教程
- ios修改textField的placeholder的字体颜色、大小
- 史上最全的iOS各种设备信息获取总结
- iOS开发实现下载器的基本功能(1)
- 在BIOS中开启虚拟化技术
- iOS开发-pod install 出错 The dependency `AFNetworking (~> 2.6.0)` is not used in any concrete target.
- iOS attributeString 换行
- 弹出框(警告框)iOS9.0使用方法
- 真机调试
- iOS 【消息处理 performSelector】
- QQ登录&社会化分享
- Undefined symbols for architecture x86_64
- iOS 保持界面流畅的技巧
- iOS屏幕适配
- OC 运行时机制的一些应用
- 快速找到本视图的控制器
- 单元格删除方法和交换位置方法
- FMDB的简单应用
- 根据输入的textField首字符排序