IOS项目之弹出动画终结篇
在之前写过IOS项目之弹出动画一、IOS项目之弹出动画二、IOS项目之弹出动画三,今天来一个终极封装已经上传到Github上弹出动画总结篇UIPopoverTableView。
UIPopoverTableView也是在前面的几个基础上进行封装。如果对默认的动画效果不满意可以继承它,重写- (void)fadeIn和- (void)fadeOut方法在Github中也写了一个demo。
UIPopoverTableView本质还是一个TableView,只是在TableView的基础上增加了一些属性和方法,下面我把.H贴出来,介绍下怎么使用。
// // UIPopoverTableView.h // XQBCommunityApp // // Created by City--Online on 16/1/27. // Copyright © 2016年 CityOnline_1. All rights reserved. // #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> @class UIPopoverTableView; @protocol PopoverTableViewDelegate <NSObject> @optional //头部视图 -(UIView *)popTableHeadView:(UITableView *)tableView; //顶部试图 -(UIView *)popTableFooterView:(UITableView *)tableView; //取消 - (void)popoverTableViewCancel:(UITableView *)popTableView; @end @interface UIPopoverTableView : UITableView @property (nonatomic,strong) UIControl *overlayView; @property (nonatomic,strong) UIView *contentView; @property (nonatomic,assign) float contentViewCornerRadius; @property (nonatomic, assign) id<PopoverTableViewDelegate> popoverDelegate; //在父视图view的相对位置为Frame -(void)showInView:(UIView*)view withFrame:(CGRect)frame; //下面两个方法主要是为了子类定义弹入弹出动画 //显示的动画效果 - (void)fadeIn; //显示的动画效果 - (void)fadeOut; @end
1.PopoverTableViewDelegate协议中主要是头部、尾部和点击空白的代理方法。
2.属性
overlayView是背景层。
contentView是包括头部、尾部和中间的TableView,整个的弹出内容。
contentViewCornerRadius是设置contentView的边角。
对于有些可能要设置中间View的CornerRadius,可以设置UIPopoverTableView的CornerRadius,例如下面的效果图.
3.方法
- (void)fadeIn;- (void)fadeOut;主要是为了子类自定义contentView的弹入弹出效果。
UIPopoverTableView默认contentView的动画效果类似微信红包的效果。
如果要改变动画显示效果例如从底部弹出、或者从顶部拉出,可以继承UIPopoverTableView重现- (void)fadeIn;- (void)fadeOut;在Github中我是这样重写,主要还是对
contentView和overlayView操作。
- (void)fadeIn { self.contentView.frame = CGRectMake(, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, self.contentView.frame.size.height); [UIView animateWithDuration:. animations:^{ self.contentView.frame = CGRectMake(, [UIScreen mainScreen].bounds.size.height-self.contentView.frame.size.height, [UIScreen mainScreen].bounds.size.width, self.contentView.frame.size.height); } completion:^(BOOL finished) { }]; } - (void)fadeOut{ [UIView animateWithDuration:. animations:^{ self.contentView.frame = CGRectMake(, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, self.contentView.frame.size.height); } completion:^(BOOL finished) { if (finished) { [self.overlayView removeFromSuperview]; [self.contentView removeFromSuperview]; } }]; }
UIPopoverTableView可以实现小区宝中的以下几个效果
对于这几次博客园管理员总是将我的博客移除首页,我表示遗憾。
IOS项目之弹出动画终结篇的更多相关文章
- IOS项目之弹出动画二
在IOS项目之弹出动画一中只是实现也功能,并没有体现面向对象的思想 ,今天就试着把它封装了一下,弹出视图的内容可以根据自定义,此处只是用UIDatePicker来演示 我把它传到了GitHub上 ...
- IOS项目之弹出动画三
前面写了弹出动画两个,今天做商城时又用到了,看着这个用着蛮普遍的,所以记了下来 // // mallMoreView.h // XQB // // Created by City--Online on ...
- IOS项目之弹出动画一
小区宝首页导航栏左边有一个物业按钮,点击时会出现一个视图动画,之前用的是一个POP第三方,想着几个POP动画就要引用一堆的第三方有点麻烦,就试着自己写了一下,功能实现了,下一步就是优化将其封装一下.下 ...
- ios等待ualertview弹出动画完成后再跳转至其他页面
[self performSelector:@selector(popView:) withObject:nil afterDelay:2.0];
- 阶段一:为View设置阴影和弹出动画(天气应用)
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 上一篇阶段一:通过网络请求,获得并解析JSON数据(天气应用)完成了应用的核心功能,接下来就要对它进行优化.今天我 ...
- mac关闭渐隐和弹出动画效果
苹果系统应用程序的窗口和对话框每次使用的时候都有华丽的特效,但是如果你感觉这种特效显得有点慢(MacGG闲的蛋疼),那该如何取消掉他呢? 方法很简单,打开"终端"(Finder-& ...
- 清除ios系统alert弹出框的域名
清除ios系统alert弹出框的域名 <script> window.alert = function(name) { var iframe = document.createElemen ...
- iOS 15 无法弹出授权弹框之解决方案---Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0
2021年9月30日下午:我正愉快的期盼着即将到来的国庆假期,时不时刷新下appstoreconnect的网址,28号就提上去的包,今天还在审核中....由于这个版本刚升级的xcode系统和新出的iO ...
- WPF制作子窗体的弹出动画效果
创建一个WPF应用程序WpfApplication1,新建个窗体DialogWin <Windowx:Class="WpfApplication1.DialogWin" xm ...
随机推荐
- python网络编程--操作系统介绍
1.操作系统介绍 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两 ...
- Delphi XE7中开发安卓程序一些有用的帮助资源
说明:要想看到下面资源,打开帮助后,在搜索里面输入URL最后一部分,如果最后带“.html”,则把它删除,随后搜索一下,就看到了. 例如:想看下面的FireMonkey类关系图,只在搜索里面输入&qu ...
- php—Smarty-1 (18)
smarty 一.模板原理 1. 为什么使用模板 1) 场景: ;$i<$count;$i++){ echo ‘<td>’.$row[‘proname’].’</td> ...
- 对this的理解?
回答一: (1) Js的this指向是不确定的,也就是说可以动态改变的.Call/apply 就是用于改变this指向的函数,这样设计可以让代码更加灵活,复用性更高 (2) This一般情况下,都是指 ...
- linux查看python安装位置
1, import sys print sys.path 即可打印所有python路径. 2, 执行命令whereis python即可显示出python相关的所有的路径,包括可执行文件路径,安装 ...
- MYSQL处理高并发,防止库存超卖(图解)
抢购场景完全靠数据库来扛,压力是非常大的,我们在最近的一次抢购活动改版中,采用了redis队列+mysql事务控制的方案,画了个简单的流程图: 先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团 ...
- httpclient4.5 https请求 忽略身份验证
import org.apache.commons.collections.MapUtils; import org.apache.http.*; import org.apache.http.cli ...
- 后序线索化二叉树(Java版)
前面介绍了前序线索化二叉树.中序线索化二叉树,本文将介绍后序线索化二叉树.之所以用单独的一篇文章来分析后序线索化二叉树,是因为后序线索化二叉树比前序.中序要复杂一些:另外在复习线索化二叉树的过程中,大 ...
- HTML01--基础概述
HTML:Hyper Text Markup Language,超文本标记语言,不是编程语言,而是标记语言,使用一套标记标签来描述网页.通常来说,我们平时打开浏览器看到的网页由三部分组成,分别是HTM ...
- php 前台生成多维数组 后台批量添加
同一个地方绊倒两次,记录一下哈 1)前台表单,看 name <div class="tab-pane row " id="tab-1" > < ...