使用 CGAffineTransform 转换视图2025年3月17日 | 阅读 3 分钟 Swift 提供了一个仿射变换矩阵 CGAffineTransform 来绘制 2D 图形。它是一个结构,允许 UIView 进行平移、缩放、倾斜或旋转。 我们必须为 UIView 定义一个名为 transform 的 CGAffineTransform 类型属性。 仿射变换是保留点之间的比例和共线性的变换。 变换矩阵我们必须为 UIView 定义一个 3 X 3 变换矩阵才能应用仿射变换。 变换应用于 UIView 的边界中心。 ![]() 我们可以设置和获取 UIView 的 transform 属性。 我们还可以使用以下代码为 UIView transform 属性分配单位矩阵。 下面显示了一个 3 X 3 单位矩阵。 ![]() 转换对象有一个 Boolean 属性 isIdentity,可用于检查视图的转换是否为单位转换。 平移矩阵我们可以使用平移矩阵更改 UIView 的位置。 这将使用下面显示的矩阵的 Tx 和 Ty 值来平移视图的位置。 ![]() CGAffineTransform 类型提供一个函数 translatedBy( x:y: )。 它还提供一个初始化器 CGAffineTransform(translationX:, y: )。 该函数用于创建变换矩阵,该矩阵使用提供的值转换当前变换。 让我们创建一个演示项目,将 UIView 转换为传递到方法中的值。 将以下视图添加到界面生成器中的视图控制器。 ![]() 让我们连接 UIView 的 outlet 和 translate 按钮的 action outlet。 将以下代码添加到 ViewController.swift 文件。 单击 translate 按钮时,该视图将按给定的 x 和 y 值进行平移,如下图所示。 ![]() 我们还可以使用以下代码来操作变换矩阵的 Tx 和 Ty 值。 缩放矩阵缩放矩阵用于通过更改 UIView 的宽度和高度来转换它。 为了改变 UIView 的缩放比例,我们需要将缩放矩阵应用于变换矩阵。 缩放矩阵会更改变换的 a 和 d 值,其中 a 是 xScale,d 是 yScale。 a 和 d 的默认值均为 1。 ![]() 我们可以使用 scaledBy(x:y: ) 函数来缩放视图。 我们还可以使用 CGAffineTransform 初始化器作为 CGAffineTransform(scaleX:, y: )。 我们将对上面的项目进行一些更改以缩放视图。 我们将更改 UIButton 的标题为 Scale 以及 action outlet 标题。 ViewController.swift 包含以下代码。 旋转矩阵旋转矩阵应用于 UIView 的变换矩阵,以使其在任何方向上旋转。 旋转矩阵会影响变换矩阵的 a、b、c 和 d 属性,如下所示。 ![]() 我们可以使用 UIView CGAffineTransform rotated(by: ) 函数,如下所示。 我们还可以使用 CGAffineTransform 初始化器,如下所示。 现在,我们将更改上面的项目以旋转视图。 我们将更改 action outlet 以及按钮标题。 ViewController.swift 包含以下代码。 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。