美文网首页
自定义提示框View的弹出动画

自定义提示框View的弹出动画

作者: 拖不垮打不烂 | 来源:发表于2017-08-12 15:14 被阅读0次

项目中经常出现版本更新提示框,类似于UIAlertController的复杂提示框等,只需要自定义view,调用如下代码即可

调用方法

- (IBAction)clickInviteFriendsButton:(UIButton *)sender {
    _inviteFriendsView.hidden = NO;
    [[self class]animationAlert:_inviteFriendsView];
}

自定义动画(Object-C版)

+(void) animationAlert:(UIView *)view{
    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.0f, @0.5f, @0.75f, @1.0f];
    popAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [view.layer addAnimation:popAnimation forKey:nil];
}

自定义动画(Swift版)

class func animationAlert(view: UIView ){
        let popAnimation = CAKeyframeAnimation.init(keyPath: "transform")
        popAnimation.duration = 0.4
        popAnimation.values = [NSValue.init(caTransform3D: CATransform3DMakeScale(0.01,0.01, 1.0)),
                               NSValue.init(caTransform3D: CATransform3DMakeScale(1.1, 1.1, 1.0)),
                               NSValue.init(caTransform3D: CATransform3DMakeScale(0.9, 0.9, 1.0)),
                               NSValue.init(caTransform3D:CATransform3DIdentity)]
        popAnimation.keyTimes = [0.0, 0.5, 0.75, 1.0]
        popAnimation.timingFunctions = [CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut),CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut),CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut)]
        view.layer.cornerRadius = 5
        view.layer.masksToBounds = true
        view.layer.add(popAnimation, forKey: nil)
 }

相关文章

网友评论

      本文标题:自定义提示框View的弹出动画

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