iOS 动画 —— transform

参考博客

@property(nonatomic) CGAffineTransform transform;  // view 的属性
@property CATransform3D transform; // layer 的属性
  • view.transform:一般是View的旋转,拉伸移动等属性,是二维的,通常使用都是前缀CGAffineTransform的类。
  • view.layer.transform:可以在3D模式下面的变化,通常使用的都是前缀为CATransform3D的类。

Tip: 其实两者的区别就是二维和三维的区别

一. CGAffineTransform

1. 简介

CGAffineTransform是一个用于处理形变的类,其可以改变控件的平移、缩放、旋转等,其坐标系统采用的是二维坐标系,即向右为x轴正方向,向下为y轴正方向

2. 方法介绍

  1. 以初始位置为基准,在x轴方向上平移x单位,在y轴方向上平移y单位
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
  1. 以初始位置为基准,在x轴方向上缩放x倍,在y轴方向上缩放y倍
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
  1. 实现以初始位置为基准,将坐标系统逆时针旋转angle弧度(弧度=π/180×角度,M_PI弧度代表180角度)
CGAffineTransformMakeRotation(CGFloat angle)

注:

  • 当angle为值时,时针旋转坐标系统,反之时针旋转坐标系统
  • 逆时针旋转坐标系统的表现形式为对控件进行顺时针旋转
  1. 以一个已经存在的形变(t)为基准,在x轴方向上平移x单位,在y轴方向上平移y单位
CGAffineTransformTranslate(CGAffineTransform t,CGFloat tx, CGFloat ty)
  1. 实现以一个已经存在的形变为基准,在x轴方向上缩放x倍,在y轴方向上缩放y倍
CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
  1. 以一个已经存在的形变为基准,将坐标系统逆时针旋转angle弧度(弧度=π/180×角度,M_PI弧度代表180角度)
CGAffineTransformRotate(CGAffineTransform t,CGFloat angle)

:transform属性默认值为CGAffineTransformIdentity,可以在形变之后设置该值以还原到最初状态

二、 CATransform3D

参考博客

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 序言 追求美好是人的天性,这是猿们无法避免的。我们总是追求更为酷炫的实现,如果足够仔细,我们不难发现一个好的动画通...
    姚钦阅读 4,172评论 0 3
  • 序言 追求美好是人的天性,这是猿们无法避免的。我们总是追求更为酷炫的实现,如果足够仔细,我们不难发现一个好的动画通...
    sindri的小巢阅读 16,820评论 31 97
  • CGAffineTransform介绍 概述 CGAffineTransform是一个用于处理形变的类,其可以改变...
    蚊香酱阅读 74,355评论 13 164
  • 【Android 自定义View之绘图】 基础图形的绘制 一、Paint与Canvas 绘图需要两个工具,笔和纸。...
    Rtia阅读 14,035评论 5 34
  • 概述 CATransform3D是一个用于处理3D形变的类,其可以改变控件的平移、缩放、旋转、斜交等,其坐标系统采...
    蚊香酱阅读 13,450评论 3 13