一个简单的弹窗动画,让用户点击弹窗时体验提高一些,不用感觉很生硬;代码如下:
#import <Foundation/Foundation.h>
@interface BLPopviewAnimated : NSObject
//展现
+ (void)popView:(UIView *)view animated:(BOOL)animated;
//关闭
+ (void)closeView:(UIView *)view animated:(BOOL)animated;
@end
#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];
}
}
@end
这动画没有加上异步线程,以后有空再优化。