美文网首页
iOS动画-transform

iOS动画-transform

作者: 棒棒德 | 来源:发表于2019-12-11 18:11 被阅读0次

参考链接:https://www.jianshu.com/p/02c341c748f9

可以操作view 或者 view的layer

一、操作view

1.使用 @property(nonatomic)CGAffineTransform transform;// view 的属性

view.transform:一般是View的旋转,拉伸移动等属性,是二维的,通常使用都是前缀CGAffineTransform的类。

2.使用方法:

栗子1:

/// 初始状态

view.transform=CGAffineTransformIdentity;

[UIView animateWithDuration:1.0fanimations:^{

//变大两倍

view.transform=CGAffineTransformMakeScale(2.0f,2.0f);

}];

栗子2:

View.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0, 0);///view的大小设置为0

3.当我们改变过一个view.transform属性或者view.layer.transform的时候需要恢复默认状态的话,记得先把他 们重置为

view.transform=CGAffineTransformIdentity;

4.可以设置的一些属性:

CGAffineTransformIdentity//位移仿射 ---- 理解为平移 (CGFloat tx,CGFloat ty) CGAffineTransformMakeTranslation CGAffineTransformTranslate//旋转仿射 ---- 理解为旋转 (CGFloat angle)CGAffineTransformMakeRotationCGAffineTransformRotate//缩放仿射 --- 理解缩放大小 (CGFloat sx, CGFloat sy)CGAffineTransformMakeScale CGAffineTransformScale

二、操作layer

1.使用 @propertyCATransform3D transform;// layer 的属性

view.layer.transform:可以在3D模式下面的变化,通常使用的都是前缀为CATransform3D的类。

2.使用方法:

使用方法animationWithKeyPath:对 CABasicAnimation进行实例化,并指定Layer的属性作为关键路径进行注册。

//围绕y轴旋转CABasicAnimation*transformAnima=[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];

设定动画

设定动画的属性和说明

属性说明

duration动画的时长

repeatCount重复的次数。不停重复设置为 HUGE_VALF

repeatDuration设置动画的时间。在该时间内动画一直执行,不计次数。

beginTime指定动画开始的时间。从开始延迟几秒的话,设置为【CACurrentMediaTime() + 秒数】 的方式

timingFunction设置动画的速度变化

autoreverses动画结束时是否执行逆动画

fromValue所改变属性的起始值

toValue所改变属性的结束时的值

byValue所改变属性相同起始值的改变量

栗子1:

//不特殊设置,会回到原始状态

CABasicAnimation*transformAnimation=[CABasicAnimation animationWithKeyPath:@"transform"];transformAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeScale(2.0,2.0,1.0)];transformAnimation.beginTime=CACurrentMediaTime();transformAnimation.duration=1.0f;transformAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];[view.layer addAnimation:transformAnimation forKey:@"transformAnimation"];

栗子2:

//  不会回到原始状态

view.layer.transform=CATransform3DIdentity;[UIView animateWithDuration:1.0fanimations:^{view.layer.transform=CATransform3DMakeScale(2.0,2.0,1.0);}];

3.控制不会到原始状态:

只需设置removedOnCompletion、fillMode两个属性就可以了。

transformAnima.removedOnCompletion=NO;transformAnima.fillMode=kCAFillModeForwards;

4.可以设置的属性:

CATransform3DIdentity//位移3D仿射 ==> (CGFloat tx, CGFloat ty, CGFloat tz)CATransform3DMakeTranslationCATransform3DTranslation//旋转3D仿射 ==> (CGFloat angle, CGFloat x, CGFloat y, CGFloat z)CATransform3DMakeRotationCATransform3DRotation//缩放3D仿射 ==> (CGFloat angle, CGFloat x, CGFloat y, CGFloat z)CATransform3DMakeScaleCATransform3DScale//叠加3D仿射效果CATransform3DConcat//仿射基础3D方法,可以直接做效果叠加CGAffineTransformMake(sx,shx,shy,sy,tx,ty)//检查是否有做过仿射3D效果 == ((CATransform3D t))CATransform3DIsIdentity(transform)//检查2个3D仿射效果是否相同CATransform3DEqualToTransform(transform1,transform2)//3D仿射效果反转(反效果,比如原来扩大,就变成缩小)CATransform3DInvert(transform)

相关文章

  • iOS动画

    iOS动画-从UIView动画说起iOS动画-Transform和KeyFrame动画iOS动画-layout动画...

  • iOS动画总结(Core Animation&POP&a

    iOS动画总结(Core Animation&POP&贝塞尔&Transform) iOS动画总结(Core An...

  • iOS 动画(一)

    iOS 动画(一)iOS 动画(二) 基于 UIView 的 transform 属性 缩放 该方法有两个参数,分...

  • iOS 动画四:transform 动画

    一、iOS transform 动画 view.transform:一般是 View 的旋转,拉伸移动等属性,是二...

  • iOS transform 动画

    一、iOS transform 动画 view.transform:一般是 View 的旋转,拉伸移动等属性,是二...

  • iOS 动画 —— transform

    参考博客 view.transform:一般是View的旋转,拉伸移动等属性,是二维的,通常使用都是前缀CGAff...

  • iOS 动画 —— transform

    了解仿射变换,我们可以先区别一下 view.transform 和 view.layer.transform。 v...

  • iOS动画-transform

    参考链接:https://www.jianshu.com/p/02c341c748f9 可以操作view 或者 v...

  • iOS transform动画

    transform主要由这几个方法 CGAffineTransformMakeTranslation(平移)CGA...

  • 016-iOS 动画机制

    iOS 动画大致有以下几类 UIView Transform 仿射变换 KeyFrame CoreAnimatio...

网友评论

      本文标题:iOS动画-transform

      本文链接:https://www.haomeiwen.com/subject/qplagctx.html