iOS开发 封装一个可以复用的弹窗父类(TSActionAlertView)

来源:互联网 发布:最新网络语言大全 编辑:程序博客网 时间:2024/06/09 18:57

GitDemo地址,可以直接跑起来再看文章的O(∩_∩)O,有用的别忘了给老弟个Star

1. 需求分析

功能需要: 在开发中我们总是遇到使用各种各样的弹窗的情况,有的用作提示,有的用作功能,弹窗种类很多

他们的共同之处是:都有一个背景蒙层,都需要加一些动画

但是它们用作展示的部分总是不尽相同:展示的样式各异,很难统一

2. 功能需求

如果能有一个统一的,只需要写子视图,确定位置的父类,其他的动画,背景已经封装好,那么我们就可以只写子控件和布局,而不用管其他问题

3. 功能实现

所以我造了个轮子,把展示部分的作为containerview抛出来,布局和子视图可以随意添加,只需要继承就好了方便以后使用弹窗的时候可以快速的写出来,不用考虑弹窗的动画,弹窗的冲突等一系列问题,使用弹窗就像写一个view一样简单.

效果图(自己画的界面..主要看效果,看效果):
效果图加载中...

4. 简单介绍

  • 2 种背景样式
TSActionAlertViewBackgroundStyle 说明 TSActionAlertViewBackgroundStyleSolid 背景半透明 TSActionAlertViewBackgroundStyleGradient 背景渐变
  • 5 种弹窗样式
TSActionAlertViewTransitionStyle 说明 TSActionAlertViewTransitionStyleSlideFromBottom 上来,然后下去 TSActionAlertViewTransitionStyleFade 渐变 TSActionAlertViewTransitionStyleBounce 弹出 TSActionAlertViewTransitionStyleDropDown 下落 TSActionAlertViewTransitionStyleSlideFromTop 下滑,然后上去

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. 正常弹窗

1. normal.gif

2. 输入弹窗

2. input.gif

3. 网页弹窗弹窗

3. web.gif

4. 下拉效果弹窗

4. pull.gif

5. 正常弹窗

5. jump.gif

更多功能正在开发中….

阅读全文
0 0
原创粉丝点击