设为首页 加入收藏

TOP

iOS动画(三)
2017-10-13 10:33:31 】 浏览:3682
Tags:iOS 动画
ffineTransformIdentity 原始形变
7 [UIView setAnimationDuration:1]; 8 self.showView.transform = CGAffineTransformRotate(self.showView.transform, -M_PI / 180 * 30); 9 [UIView commitAnimations]; 10 }

  我们再来看一下另一种方式实现的UIView动画。

  简单的Block动画:

 1 // 简单block动画
 2 - (IBAction)simpleBlock:(UIButton *)sender{
 3     [UIView animateWithDuration:2 animations:^{
 4         CGPoint point = self.planeImageView.center;
 5         point.y += 100;
 6         self.planeImageView.center = point;
 7     } completion:^(BOOL finished) {
 8         NSLog(@"动画结束");
 9         [UIView animateWithDuration:2 animations:^{
10             CGPoint point = self.planeImageView.center;
11             point.y -= 100;
12             self.planeImageView.center = point;
13         } completion:nil];
14         
15     }];
16 }

  复杂的Block动画:

1 // 复杂的block
2 - (IBAction)complexBlock:(UIButton *)sender {
3     [UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
4         self.planeImageView.transform = CGAffineTransformRotate(self.planeImageView.transform, M_PI / 180 * 90);
5     } completion:^(BOOL finished) {
6         // 还原到初始形变
7 //        self.planeImageView.transform = CGAffineTransformIdentity;
8     }];
9 }

  转场动画:

 1 // 过度动画, 转场动画
 2 - (IBAction)transitionAnimation:(UIButton *)sender {
 3     [UIView beginAnimations:nil context:nil];
 4     [UIView setAnimationDuration:2];
 5     // 第一个参数: 转场动画的类型
 6     // 第二个参数: 给哪个对象添加转场动画
 7     // 第三个参数: 缓存设置(YES执行效率更高)
 8     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.label cache:YES];
 9     self.label.text = @"熊大熊二的故事";
10     [UIView commitAnimations];
11 }

  弹簧动画:

 1 // 弹簧动画
 2 - (IBAction)sprintAnimation:(UIButton *)sender {
 3     // 1. 动画时长
 4     // 2. 延迟时间
 5     // 3. 阻尼系数, 越大, 弹簧形变越小
 6     // 4. 速度
 7     // 5. 动画类型选项
 8     [UIView animateWithDuration:2 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:10 options:UIViewAnimationOptionCurveLinear animations:^{
 9         CGPoint point = self.planeImageView.center;
10         point.y += 260;
11         self.planeImageView.center = point;
12         
13     } completion:^(BOOL finished) {
14         NSLog(@"动画结束");
15     }];
16 }

  大家可以发现,第二种实现方式实际上是对第一种方式使用了Block封装,相对来说,第二种实现方式更加的方便。而仔细看核心动画和UIView动画,我们也可以发现,实际上,UIView动画就是对核心动画的封装,使用起来更加的方便。

  以上就是iOS动画的全部内容了,如果有没有说到的地方,看到的码友可以提出来,我再做更新。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在Swift中应用Grand Central Disp.. 下一篇SQLite错误码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目