我正在创建一个iPad应用程序,并希望使用视图的当前大小更新用户。我曾经通过计算cgaffineTransform的比例并将XScale乘以(相关视图的)和Yscale乘以高度来实现此操作。我想继续这样做,但是我不再进行2D转换,我敢肯定,从catransform3d中提取比例信息的方程式。

你能帮我吗?

有帮助吗?

解决方案

为了获得当前层的比例,您只能执行 valueForKeyPath: 在层上:

CGFloat currentScale = [[layer valueForKeyPath: @"transform.scale"] floatValue];

可以在 苹果核心动画编程指南

其他提示

我不熟悉API,但是 CATransform3D 看起来像是用于进行3D转换的常规4x4转换矩阵。

假设它仅代表了比例,旋转和翻译的组合,那么可以通过计算左上左上3x3的行或列的大小来提取比例因子。 CATransform3D 分别是行或列专业。

例如,如果它是行 - 马约尔,则x方向的比例是(M11 * M11) +(M12 * M12) +(M13 * M13)的平方根。 Y和Z量表类似地是第二行和第三行的幅度。

从文档 CATransform3DMakeTranslation 看起来 CATransform3D 确实是行长。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top