美文网首页iOS点点滴滴iOS DeveloperiOS学习开发
iOS开发 封装一个可以复用的弹窗父类(TSActionAler

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

作者: Dylan大魔王 | 来源:发表于2017-11-03 21:02 被阅读0次

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

    1. 需求分析

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

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

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

    2. 功能需求

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

    3. 功能实现

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

    不过做出来之后发现,它的功能远远不止这些,还可以写列表,跳转,输入框,选项卡,只要有黑色背景的都能用,效果请看文章底部

    效果图:


    Untitled.gif

    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

    更多功能正在开发.......

    相关文章

      网友评论

        本文标题:iOS开发 封装一个可以复用的弹窗父类(TSActionAler

        本文链接:https://www.haomeiwen.com/subject/dndxmxtx.html