美文网首页程序员
iOS 写一个弹框基类 (baseAlert)

iOS 写一个弹框基类 (baseAlert)

作者: 嘿晴天 | 来源:发表于2016-09-16 11:33 被阅读463次

弹框是一个应用必不可少的控件,但是光是用系统丑丑的弹框,往往不能满足我们的需求,很多时候我们需要做一个自定义的弹框,但是 show 和 hide 效果都要统一,那么我就想到来写一个弹框的BaseView.写一个base 弹框baseView 有一个好处,不用重复写一堆如此show 和hide 的效果,写来看怎么使用。

Untitled.gif

1 使用
(1)第一方式继承
继承


7FA9E491-84CA-49E2-B096-898D2A3591DB.png

方法重载

//重载setAlertView  把你想要alertView 写出来
-(void)setAlertView
{
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 280)];
    view.backgroundColor = [UIColor blueColor];
    [self addSubview:view];
}
// show 执行
-(void)showToDO
{
    NSLog(@"showing ---------");
}
//hide执行
-(void)hideToDO
{
    NSLog(@"hiding -----------");
}

(2)第二种方式 是直接使用baseAlert 初始化函数

/**
 *  初始化
 *
 *  @param type  中部alert 还是底部alert
 *  @param isNav 是否包含导航栏
 *  @param setUIAlertBlock 设置alertView
 *  @param showUIBlock     显示alertView
 *  @param hideUIBlock     隐藏lertView
 *
 *  @return <#return value description#>
 */
-(instancetype)initWithType:(DTAlertType)type andWithNav:(BOOL)nav andSetUIAlert:(alertBlock)setUIAlertBlock andShowUIBlock:(alertBlock)showUIBlock andHideUIBlock:(alertBlock)hideUIBlock;

//例子
 DTBaseAlertView *alertView = [[ DTBaseAlertView alloc]initWithType:DTAlertTypeBottom andWithNav:NO andSetUIAlert:^(UIView *superView){
                UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 280)];
                view.backgroundColor = [UIColor blueColor];
                [superView addSubview:view];
                
            } andShowUIBlock:^(UIView *superView){
                NSLog(@"showing  ---");
            } andHideUIBlock:^(UIView *superView){
                NSLog(@"hideing ----");
            }];
 [self.view addSubview:alertView];
  [alertView show];

2 简单代码分析

 UIView *bgView = self.subviews[0];
        UIView *alertView = self.subviews[1];
        bgView.alpha = 0;
        CGRect frame = alertView.frame;
        frame.origin.y = ScreenHeight;
        alertView.frame = frame;
        [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:2 options:UIViewAnimationOptionCurveEaseIn animations:^{
            if (alertType == DTAlertTypeCenter) {
                CGRect frame = alertView.frame;
                frame.origin.x = (ScreenWidth - alertView.frame.size.width)/2;
                frame.origin.y = (ScreenHeight-alertView.frame.size.height)/2;
                alertView.frame = frame;
            }
            if (alertType == DTAlertTypeBottom) {
                CGRect frame = alertView.frame;
                frame.origin.x = (ScreenWidth - alertView.frame.size.width)/2;
                float y = ScreenHeight-alertView.frame.size.height;
                if (isNav) {
                    y = ScreenHeight-64-alertView.frame.size.height;
                }
                frame.origin.y = y;
                alertView.frame = frame;
            }
            bgView.alpha = 0.5;
        } completion:nil];

主要是通过superview 的 subview 数组获取到alertView(弹框) 然后在对通过uiviewanimation 对他做 frame 改变的过渡动画

例子可以看我的github 地址https://github.com/heysunnyboy/BaseAlert.git

相关文章

  • iOS 写一个弹框基类 (baseAlert)

    弹框是一个应用必不可少的控件,但是光是用系统丑丑的弹框,往往不能满足我们的需求,很多时候我们需要做一个自定义的弹框...

  • 弹框的三种类(方式)

    第一个类 UIAlertView:继承于UIView,类的对象为弹框。弹框在屏幕中央 弹提示控件的方法(弹框):提...

  • iOS 提示框

    iOS 8.0 之后UIAlertController弹框代替了UIAlertView弹框 和 UIActionS...

  • iOS 写一个弹框

    前言: 弹框嘛,总会伴随着各种各样的需求。在此罗列我写过的弹框。项目使用 XIB 开发,布局很方便,纯代码的话,还...

  • ios 常用代码

    ios 自定义弹框

  • iOS swift 和 H5交互 --MessageHandle

    图片上的弹框是iOS原生弹框主要介绍H5调用swift js调用iOS 一 iOS端 1.初始化WKWebVIew...

  • css实现简单弹框

    写一个简单的弹框 html: 点击弹框 css: #bombContain{ z-index: 199412204...

  • iOS Swift 写一个弹框

    前言: 写了一个Swift版本的弹框。 代码地址: 代码地址:https://gitee.com/yuency/A...

  • Android弹框窗口背景透明

    要实现版本更新功能,弹框效果如下 这个时候要让弹框窗口为透明色才能实现,弹框类如下 弹框布局如下 使用方法 参考文...

  • NYSTK(iOS炫彩弹框框架)

    ios 炫彩弹框ios colorful alert framework GitHub address: http...

网友评论

    本文标题:iOS 写一个弹框基类 (baseAlert)

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