iOS快速实现对错控件动画弹窗
用pop动画简单实现弹窗的缩放和渐变,感觉这个动画常用,就写一下博客
上效果图:
上代码:
给UIView添加类别,自定义弹出和关闭方法
//自定义弹出窗
- (void)popView:(UIView *)view animated:(BOOL)animated {
// 屏幕中心
view.center = CGPointMake(KWidth * 0.5, KWidth * 0.5);
[self addSubview:view];
if (animated) {
// 第一步:将view宽高缩至无限小(点)
view.transform = CGAffineTransformScale(CGAffineTransformIdentity,CGFLOAT_MIN, CGFLOAT_MIN);
[UIView animateWithDuration:0.3 animations:^{
self.backgroundColor = RGBA(1, 1, 1, 0.5);
// 第二步: 以动画的形式将view慢慢放大至原始大小的1.1倍
view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
}completion:^(BOOL finished) {
[UIView animateWithDuration:0.2 animations:^{
// 第三步: 以动画的形式将view恢复至原始大小
view.transform = CGAffineTransformIdentity;
}];
}];
}
}
//自定义关闭窗
- (void)closeView:(UIView *)view Animated:(BOOL)animated {
UIView *backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KWidth, KHeight)];
backgroundView.backgroundColor = RGBA(1, 1, 1, 0.5);
if (animated) {
[UIView animateWithDuration:0.2 animations:^{
// 第一步: 以动画的形式将view慢慢放大至原始大小的1.1倍
view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
}completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 animations:^{
self.backgroundColor = RGBA(1, 1, 1, 0);
// 第二步: 以动画的形式将view缩小至原来的1/1000分之1倍
view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
}completion:^(BOOL finished) {
// 第三步: 移除
[view removeFromSuperview];
}];
}];
} else {
[view removeFromSuperview];
}
}
写完类别,记得引入,可以在个别控制器中单独引入,也可以在pch文件中 #import “UIView+PopAnimate.h” ,大家一起用。
引用
UIImageView *imageView = [[UIImageView alloc]init];
[self.view addSubview:imageView];
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.mas_equalTo(0);
make.height.width.mas_equalTo(180);
}];
[self.view popView:imageView animated:YES];
[imageView setImage:[UIImage imageNamed:@"correct"]];
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6* NSEC_PER_SEC)); dispatch_after(delayTime, dispatch_get_main_queue(), ^{
[self.view closeView:imageView Animated:YES];
});
demo下载
欢迎斧正!