You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift CGAffineTransform变换操作执行顺序相关问题咨询

CGAffineTransform 执行顺序问题解答

你所列的三个理解全部正确,Core Graphics 中仿射变换的组合遵循「后拼接的变换先执行」的核心规则,本质是因为其采用行向量右乘矩阵的计算逻辑,组合矩阵最右侧的变换会最先作用到坐标上。对应每个问题的具体说明如下:

  • 针对问题1:CGAffineTransform(A).scaledBy(B) 本质是将 B 对应的缩放矩阵拼接在 A 变换矩阵的右侧,对 myCgRect 应用该组合变换时,会先执行 B 的缩放操作,再执行 A 对应的变换,你的判断正确。
  • 针对问题2:CGAffineTransform(A).concatenating(CGAffineTransform(B)) 得到的组合矩阵为 A * B,应用到坐标时的执行顺序为先执行 B 对应的变换,再执行 A 对应的变换,你的判断正确。
  • 针对问题3:scaledBy()、translatedBy()、rotatedBy() 均为变换拼接的便捷方法,逻辑和 concatenating() 完全一致,都是将括号内对应操作的变换矩阵拼接在原有变换矩阵的右侧,所以会先执行括号内的缩放/平移操作,再执行原有 A 对应的变换,你的判断正确。

内容的提问来源于stack exchange,提问作者JeanDujardin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:51:03