iOS开发 封装一个可以复用的弹窗父类(TSActionAlertView)
来源:互联网 发布:最新网络语言大全 编辑:程序博客网 时间:2024/06/09 18:57
GitDemo地址,可以直接跑起来再看文章的O(∩_∩)O,有用的别忘了给老弟个Star
1. 需求分析
功能需要: 在开发中我们总是遇到使用各种各样的弹窗的情况,有的用作提示,有的用作功能,弹窗种类很多
他们的共同之处是:都有一个背景蒙层,都需要加一些动画
但是它们用作展示的部分总是不尽相同:展示的样式各异,很难统一
2. 功能需求
如果能有一个统一的,只需要写子视图,确定位置的父类
,其他的动画,背景已经封装好,那么我们就可以只写子控件和布局,而不用管其他问题
3. 功能实现
所以我造了个轮子,把展示部分的作为containerview抛出来,布局和子视图可以随意添加,只需要继承就好了
方便以后使用弹窗的时候可以快速的写出来,不用考虑弹窗的动画,弹窗的冲突等一系列问题,使用弹窗就像写一个view一样简单.
效果图(自己画的界面..主要看效果,看效果):
4. 简单介绍
- 2 种背景样式
- 5 种弹窗样式
5. 怎么用
用起来不要太简单
1. 继承 TSActionAlertView
2. 添加自定义控件,懒加载
3. 添加事件,写好了两个block在头文件中,方便使用.不够可以自己加
4. 继承和使用方法
- (void)layoutContainerView{ //布局containerview的位置,就是那个看得到的视图 } -(void)setupContainerViewAttributes{ //设置containerview的属性,比 如切边啥的 } - (void)setupContainerSubViews{ //给containerview添加子视图 } - (void)layoutContainerViewSubViews{ //设置子视图的frame }
5.弹出
TSActionDemoView * demoAlertView = [TSActionDemoView actionAlertViewWithAnimationStyle:TSActionAlertViewTransitionStyleSlideFromTop]; [demoAlertView show];
6.消失
[demoAlertView dismissAnimated:YES];
6. 更多功能
你想知道什么时候出现,消失?
添加了代理
- (void)actionAlertViewWillShow;//即将出现- (void)actionAlertViewDidShow;//已经出现- (void)actionAlertViewWillDismiss;//即将消失- (void)actionAlertViewDidDismiss;//已经消失- (void)actionAlertViewDidSelectBackGroundView;//点击了背景
你想让点击背景的时候隐藏?
添加了属性
@property (nonatomic, assign)BOOL isAutoHidden;//是否点击背景隐藏
isAutoHidden
如果是YES=消失,如果是NO,点击背景就不允许消失
不会适应屏幕高度?
demo里有教你怎么使用它来适配宽高,宽高其实在不同机型是相同的,不要超过
320
就好了
- (void)layoutContainerView{ //布局containerview的位置,就是那个看得到的视图 //layout self.containerView self.containerview is the alertView CGFloat hight = 222; CGFloat spideLeft = (ScreenWidth - TSACTIONVIEW_CONTAINER_WIDTH)/2; CGFloat spideTop = (ScreenHeight - hight) * 0.4; self.containerView.frame = CGRectMake(spideLeft, spideTop,TSACTIONVIEW_CONTAINER_WIDTH, hight);}
怕弹窗多了有冲突?
弹窗会自动顶掉下一个,等后一个消失后,上一个又会出现,只要保证指向弹窗的指针没有问题,就不会有错
7.更多效果展示
1. 正常弹窗
2. 输入弹窗
3. 网页弹窗弹窗
4. 下拉效果弹窗
5. 正常弹窗
更多功能正在开发中….
阅读全文
0 0
- iOS开发 封装一个可以复用的弹窗父类(TSActionAlertView)
- iOS开发封装篇-利用绘图封装一个可以涂鸦的view
- iOS开发 - 封装一个自己的按钮
- ios开发--地址选择封装的一个demo
- iOS开发造轮子 | 优雅的封装一个倒计时button
- iOS开发 - 用AVPlayer封装一个播放器
- iOS开发 - 用AVPlayer封装一个视频播放器
- iOS 开发之封装一个 sqlite3 数据库
- 自己封装的一个IOS的RadioButton
- iOS 简单封装的一个夜间模式
- 封装一个可以控制字数的编辑器(EditText)!
- JS——封装一个可以连缀的DOM库
- 封装一个Button的角标类(Image等同理可以实现)
- iOS开发UIScrollView的底层实现-你也可以自己实现一个scrollView
- iOS开发中对于NSURLRequest的封装
- iOS开发:NSUrlSession网络请求的封装
- iOS开发中对于NSURLRequest的封装
- iOS开发--封装的几个小动画
- Redis主从与集群配置
- Failed to resolve: com.android.support.fragment_mine.espresso:espresso-core:2.2.2
- 一步一步理解ioc与aop
- SSL2832 2017年11月3日提高组T1 生日宴会(二分)
- 抽象类和接口的区别
- iOS开发 封装一个可以复用的弹窗父类(TSActionAlertView)
- 一元二次方程1
- [转]multiparty 实现nodejs form-data上传
- MVP练习网络请求
- django+mysql+插入数据库网页展示内容
- SSL2833 2017年11月3日提高组T1 Alice的疑问(数位dp)
- 打造前端 Deepin Linux 工作环境——配置 XAMPP 集成环境2 虚拟主机、数据库
- hadoop FileInputFormat.addInputPaths兼容FileInputFormat.setInputPath
- 数据结构与算法C++描述(14)---二叉搜索树