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

###一、使用方法

整个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

#import

/**

* 关闭按钮的位置

*/

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都可以在

这里 看到!

dismiss ios pop效果_iOS实现自定义炫酷的弹出视图(popView)相关推荐

  1. dismiss ios pop效果_iOS实现pop效果(模态一个气泡出来)

    前面写过一篇关于UIPopoverPresentationController简单实用的文章,在使用中可能会碰到一个问题,就是点击pop出来的界面之外的地方pop出的界面才会消失,这就导致如果我在po ...

  2. dismiss ios pop效果_iOS 动画框架pop使用方法

    pop支持4种动画类型:弹簧动画效果.衰减动画效果.基本动画效果和自定义动画效果. 弹簧动画效果 1.效果图如下: 2.控制器代码如下,首先用pod安装导入pop框架: #import "V ...

  3. dismiss ios pop效果_iOS ~ ViewController的Push,Pop和Present,Dismiss转场动画

    转场动画涉及到的包括导航控制器的Push动画和Pop动画,以及普通控制器的Present和Dismiss动画,主要就是通过控制器遵守UIViewControllerTransitioningDeleg ...

  4. dismiss ios pop效果_iOS正确解决隐藏导航栏后push和pop或dismiss和present闪黑问题

    情景: 一级页面不显示导航栏 ,二级页面显示导航栏. 方法一 适用于push/pop: 一级页面中 - (void)viewWillAppear:(BOOL)animated { [super vie ...

  5. 自定义炫酷powershell

    自定义炫酷powershell(美化) linux上的bash和zsh之类的命令行终端炫酷无比. window上的cmd和powershell丑的不忍直视. 很久之前不知参考谁的一篇文章自定义了一下, ...

  6. 超酷的计步器APP(一)——炫酷功能实现,自定义水波纹特效、自定义炫酷开始按钮、属性动画的综合体验

    超酷的计步器APP(一)--炫酷功能实现,自定义水波纹特效.自定义炫酷开始按钮.属性动画的综合体验 好久没写博客了,没给大家分享技术了,真是有些惭愧.这段时间我在找工作,今年Android的行情也不怎 ...

  7. Android开发——自定义炫酷PickerView惯性滚动魔改

    Android开发--自定义炫酷PickerView快速滚动魔改 最近由于课内压力的增加和安卓课设项目,故没有怎么刷acm题,基本上学校要训练也就去水一波,程序设计相关内容也鸽了. 由于从来没有做过开 ...

  8. iOS实现自定义的弹出视图(popView)

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

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

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

最新文章

  1. AOJ0033 Ball【贪心+序列处理】
  2. 操作系统(五)中断和异常
  3. linux菜鸟入门-1
  4. JVM学习笔记(四)
  5. java lambda表达式详解_Java8新特性:Lambda表达式详解
  6. swagger php修改成中文,PHP使用swagger自动生成API文档
  7. Oracle Java认证OCJP考试题库在哪找
  8. cad工具箱详细讲解_cad学院派工具箱(cad绘图教程配解析)V20160804 最新版
  9. 海康威视录像机(DVR)卡在开机画面
  10. mac转换pin计算机,MAC对应PIN码表-2012.3.4整理
  11. 相机意外断电导致视频保存成DAT文件,无法播放,如何修复视频文件?
  12. 第四届蓝桥杯真题决赛java本科组
  13. “0基础考生考前三小时突破《申论》80分气哭学霸”——单一题(问题+影响)
  14. AIDA64烤机多久算过了,AIDA64烤机建议多长时间
  15. 30. 串联所有单词的子串(详细讲解版)
  16. 2万字雄文:饿了么核心交易系统 5 年演化史!
  17. 旋转不变性、尺度不变性
  18. 文库网站在线预览的真实html,墨涩网 - amWiki 轻文库源码+Atom网站搭建教程——墨涩网...
  19. Python标准-模块版本号命名-PEP-396PEP-386
  20. 微信支付公的众号支付和扫码支付

热门文章

  1. 什么是机器学习?(下)
  2. 【转】Linux下软件安装的几种方式
  3. liunx trac 插件使用之GanttCalendarPlugin
  4. preventDefault() 方法 取消事件的默认动作
  5. Python函数进阶
  6. php第三节(运算符)
  7. 使用JavaScript重定向URL参数
  8. 查看Oracle的redo日志切换频率
  9. skyline TerraBuilder(TB)处理不规则范围影像,去除空值,填充高程等(转载)
  10. C++ 中list、vector和deque比较[转]