前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能。做了最后,实现的效果大致如下:

一、使用方法


整个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消失不消失的属性,默认的是YES

  • 3.- (void)closeWithBlcok:(void(^)())complete这个方法,是关闭后的回调,比如说发送红包以后,等popView消失以后回到上一页的这种。

三、最后

https://github.com/Loveway/HWPopTool

转载于:https://www.cnblogs.com/fengmin/p/5887438.html

iOS实现自定义的弹出视图(popView)相关推荐

  1. dismiss ios pop效果_iOS实现自定义炫酷的弹出视图(popView)

    "前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能.做了最后,实现的效果大致如下:" ###一.使用方法 整个ViewController的代码大致如下 ...

  2. iOS 16 修改第三方库实现监听 SwiftUI 中 sheet 弹出视图的下滑关闭动作

    功能需求 我们已经在 iOS 16 中 SwiftUI 防止弹出的 sheet 视图被下滑关闭(dismiss)的新解决方案 这篇博文中介绍过如何在 iOS 16 中禁止用户下滑关闭弹出的 sheet ...

  3. IOS关于键盘的弹出和收起

    IOS关于键盘的弹出和收起 UITextField *text = [[UITextField alloc]init]; [text becomeFirstResponder]; 让键盘成为第一响应者 ...

  4. java右键弹出菜单_javascript自定义右键弹出菜单实现方法

    本文实例讲述了javascript自定义右键弹出菜单实现方法.分享给大家供大家参考.具体实现方法如下: 无标题页 var oPopup = window.createPopup(); function ...

  5. html自定义js程序,JS中微信小程序自定义底部弹出框

    实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...

  6. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  7. 解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题

    解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题 项目需求: 一个信息提交页面:有input输入框,有picker选择器 遇到的问题: 点击input输入框时,手机自动弹出键盘,但 ...

  8. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

  9. 同r做一个窗口_怎样在触摸屏上做一个自定义的弹出窗口?

    在触摸屏的应用中,一些故障.警告等提示信息通常是使用系统的报警窗口来实现.系统的报警窗口通常只有故障/警告的编号.日期时间及报警信息等内容,并且可以被折叠.这种千篇一律的报警窗口有时候并不能满足项目的 ...

最新文章

  1. 人工智能实践:TensorFlow笔记学习(六)—— 全连接网络实践
  2. Vue2.0增删改查案例(Vue+Less+LocalStorage)
  3. 推荐系统实战-概念理解入门篇
  4. data-ajax=“false“
  5. Java基础(六)——容器
  6. [ZT]Addison Wesley's Free Chapters and Articles
  7. 【整理】牛客网编程题前端篇(较难难度)
  8. Code Review 效率低?来试试智能语法服务
  9. Java丨基础:十三、集合
  10. 织梦dede仿站模板标签大全(最全)附带仿站工具
  11. gtx1050ti最稳定的驱动_笔记本1050ti显卡安装最新驱动版本 (415.27) 记录 NVIDIA显卡GeForce系列...
  12. win7笔记本外接显示器html,win7系统笔记本外接显示器的操作方法
  13. tolua集成lua-protobuf库
  14. Exception sending context initialized event to listener instance of class org.springframework.web
  15. 史上首次!个人所得税退税来了!如何退?怎么操作?
  16. “双11”购物狂欢节,所有女生走进了谁的直播间?
  17. 【Windows10下.sh文件的运行】‘bash’ is not recognized as an internal or external command
  18. Keychain 浅析
  19. archlinux安装kde桌面和sddm登录管理器
  20. 统计学知识整理—正态分布

热门文章

  1. mysql初始化root 密码是多少_Mysql初始化root密码和允许远程访问
  2. bigdecimal取小数部分_Java中BigDecimal保留两位小数点有哪些方法
  3. mysql查询 伪列_Mysql数据库查询到的数据设置伪列显示
  4. 鉴机识变,面向未来|RocketMQ Summit 2022 即将来袭
  5. 解读容器的 2020:寻找云原生的下一站
  6. Kubernetes 时代的安全软件供应链
  7. stm32 iic接口 进入busy_STM32通过IIC接口读取JY61模块MPU6050陀螺仪芯片数据核心程序...
  8. java 鼠标拖动图形_java怎么实现鼠标在桌面拖动过程中 画 矩形的 功能?
  9. java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1
  10. python --version没输出_python之旅【1】--格式化输出