zoukankan      html  css  js  c++  java
  • ios 7 下自定义alertView

       项目需要适配ios7,在启动页面原来ios6可以运行的alertView上加addsubView已经不起作用,所以决定自己写一个alertView。思路也就是自己做模态蒙板半透明的,给view做show,和close的动画。下面上代码,动画部分是直接取自己code4上面的。

    点击按钮

    #import <QuartzCore/QuartzCore.h>

    - (void)show{
        self.STAlertView.center = self.view.center;
        [self.view addSubview:self.STAlertView];
        CAKeyframeAnimation *popAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
        popAnimation.duration = 0.4;
        popAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.01f, 0.01f, 1.0f)],
                                [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1f, 1.1f, 1.0f)],
                                [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9f, 0.9f, 1.0f)],
                                [NSValue valueWithCATransform3D:CATransform3DIdentity]];
        popAnimation.keyTimes = @[@0.2f, @0.5f, @0.75f, @1.0f];
        popAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [self.STAlertView.layer addAnimation:popAnimation forKey:nil];
    }

    背景加上的是黑色半透明的view,注意不要直接调view的alpha

    UIView *maskView=[[UIView alloc] initWithFrame:self.view.bounds];
        maskView.backgroundColor=[UIColor colorWithRed:40/255.0 green:43/255.0 blue:52/255.0 alpha:0.6];
        [self.view addSubview:maskView];
        [maskView release];

    隐藏动画部分,动画下去之后移除alertView

    - (IBAction)hideAlertAction:(id)sender {
        CAKeyframeAnimation *hideAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
        hideAnimation.duration = 0.4;
        hideAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1f, 1.1f, 1.0f)],
                                 [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0f, 1.0f, 1.0f)],
                                 [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.00f, 0.00f, 0.00f)]];
        hideAnimation.keyTimes = @[@0.2f, @0.5f, @0.75f];
        hideAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                          [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                          [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        hideAnimation.delegate = self;
        [self.STAlertView.layer addAnimation:hideAnimation forKey:nil];
        
    }
    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
        [self.STAlertView removeFromSuperview];
    }

    在这自定义这个alertView的部分没有做高强度测试,可以自己慢慢优化

  • 相关阅读:
    docker私有仓库搭建及使用
    服务器ip迁移纪要
    Windows 下QT程序发布
    Prometheus监控软件部署方法
    android的listview控件,加了行内按钮事件导致行点击失效的问题
    惊奇!Android studio内部在调用Eclipse
    关于Android Stuido2.3和Eclipse4.4
    XCODE9.1的一些新问题
    osx12.6设置全屏
    IEEE754浮点数与字节数互转工具
  • 原文地址:https://www.cnblogs.com/leeAsia/p/3369663.html
Copyright © 2011-2022 走看看