设为首页 加入收藏

TOP

iOS动画(二)
2017-10-13 10:33:31 】 浏览:3684
Tags:iOS 动画
n:(UIButton *)sender { 2 //创建一个缩放动画 3 CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 4 basic.fromValue = @1; 5 basic.toValue = @0.75; 6 //创建一个关键帧动画,从一个位置到另一个位置 7 CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 8 CGPoint point1 = CGPointMake(100, 100); 9 CGPoint point2 = CGPointMake(300, 300); 10 NSValue *value1 = [NSValue valueWithCGPoint:point1]; 11 NSValue *value2 = [NSValue valueWithCGPoint:point2]; 12 keyFrameAnimation.values = @[value1, value2]; 13 //创建一个动画组 14 CAAnimationGroup *group = [CAAnimationGroup animation]; 15 group.duration = 4; 16 group.repeatCount = 3; 17 //将上面的两种动画添加到动画组中,动画将同步执行 18 [group setAnimations:@[basic,keyFrameAnimation]]; 19 //下面的代码会最终改变对象的位置,否则对象在动画完成后会回到初始位置 20 self.redView.layer.position = CGPointMake(300, 300); 21 //添加动画组 22 [self.redView.layer addAnimation:group forKey:nil]; 23 }

  1.5 CASpringAnimation,弹簧动画,继承于CABasicAnimation。都不难,上代码吧:

- (IBAction)springAnimation:(UIButton *)sender {
    
    CASpringAnimation *spring = [CASpringAnimation animationWithKeyPath:@"transform.rotation"];
    //质量越大,惯性越大
    spring.mass = 1;
    //阻尼系数,越大停止的越快
    spring.damping = 0.2;
    spring.fromValue = @0.2;//transform.rotation的初始值
    spring.toValue = @0.75;//transform.rotation的结束值
    spring.repeatCount = 1;
    spring.autoreverses = YES;//自动回弹
    //初始速度
    spring.initialVelocity = 5;
    spring.duration = spring.settlingDuration;
    [self.redView.layer addAnimation:spring forKey:@"spring"];
}

  下面我总结了一下keypath值,大家可以参考:

 transform.scale = 比例轉換
 transform.scale.x = 闊的比例轉換
 transform.scale.y = 高的比例轉換
 transform.rotation.z = 平面圖的旋轉
 opacity = 透明度
 margin
 zPosition
 backgroundColor    背景颜色
 cornerRadius    圆角
 borderWidth
 bounds
 contents
 contentsRect
 cornerRadius
 frame
 hidden
 mask
 masksToBounds
 opacity
 position
 shadowColor
 shadowOffset
 shadowOpacity
 shadowRadius

  上面就是核心动画的全部内容了,基本就是以代码来讲解,这些东西原理上没什么可说的,主要是知道怎么用。下面说说UIView动画。

  2、UIView动画。UIKit直接将动画集成到UIView类中,当内部的一些属性发生变化时,UIView将为这些改变提供动画支持。执行动画的工作由UIView类自动完成,但仍希望在执行动画时通知视图,因此需要将改变属性的代码放在 [UIView beginAnimations:nil context:nil] 和 [UIView commitAnimations] 之间。

  一般来说,能够影响控件外形的属性都可以使用动画,而UIView动画的实现由两种方式,我们先看第一种方式,下面看代码,一个改变控件Frame的动画:

 1 - (IBAction)changeFrame:(UIButton *)sender {
 2     //第一个参数,动画标示
 3     [UIView beginAnimations:@"changeFrame" context:nil];
 4     //设置动画次数
 5     [UIView setAnimationRepeatCount:100];
 6     //设置动画时长
 7     [UIView setAnimationDuration:1];
 8     //设置动画速率
 9     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
10     CGRect frame = self.showView.frame;
11     frame.origin.y = 200;
12     //改变frame,y值
13     self.showView.frame = frame;
14     //开始动画
15     [UIView commitAnimations];
16 }

  大家看注释应该能明白这段代码的意思。

  再上一段代码,缩放动画: 

1 //缩放动画
2 - (IBAction)scaleButtonAction:(UIButton *)sender {
3     
4     [UIView beginAnimations:@"UIView" context:nil];
5     self.showView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 1.5);
6 }

  旋转动画:

 1 // 旋转
 2 - (IBAction)rotateButtonAction:(UIButton *)sender {
 3     [UIView beginAnimations:nil context:nil];
 4     // 第一个参数: 以谁为基准进行旋转
 5     // 第二个参数: 旋转的弧度
 6     // CGA
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在Swift中应用Grand Central Disp.. 下一篇SQLite错误码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目