简单的弹出动画

567 阅读1分钟
  • 开发移动端的时候经常遇到这样的一个需求,点击一个按钮弹出一个小页面,展示隐藏,感觉很生硬
  • 封装一个简单的弹窗动画,让用户点击弹窗时体验提高一些,不用感觉很生硬;代码如下:

#import <Foundation/Foundation.h>
 
@interface BLPopviewAnimated : NSObject
 
//展现
+ (void)popView:(UIView *)view animated:(BOOL)animated;
//关闭
+ (void)closeView:(UIView *)view animated:(BOOL)animated;
 
@end

.m

#import "BLPopviewAnimated.h"
 
@implementation BLPopviewAnimated
 
//展现
+ (void)popView:(UIView *)view animated:(BOOL)animated {
    //保存当前弹出的试图
    CGFloat screenWith = SCREENWIDTH * 0.5;
    CGFloat screenHetigt = SCREENHEIGHT * 0.5;
    //屏幕中心
    CGPoint srceenCenter = CGPointMake(screenWith, screenHetigt);
    view.center = srceenCenter;
    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
    [keyWindow addSubview:view];
    
    if (animated) {
        //第一步:将view宽高缩至无限小(点)
        view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.3, 0.3);
        
        [UIView animateWithDuration:BL_Duration animations:^{
            //第一步,以动画形式将view慢慢放大至原始大的1.2倍
            view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.2, 1.2);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.2 animations:^{
                view.transform = CGAffineTransformIdentity;
            }];
        }];
    }
}


//关闭
+ (void)closeView:(UIView *)view animated:(BOOL)animated {
    
    if (animated) {
        [UIView animateWithDuration:BL_Duration animations:^{
            //第一步:以动画形式将view慢慢放大至原始大小的1.2倍
            view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.3, 0.3);
        } completion:^(BOOL finished) {
            //第三步:移除
            [view removeFromSuperview];
        }];
    } else {
        [view removeFromSuperview];
    }
}