【发布时间】:2012-12-22 08:50:32
【问题描述】:
我认为我的问题可以概括为如何存储和重置视图的转换。但是也许解释我的情况可能会有所帮助。
如果我将下面的变换一个接一个地应用到视图中(就像我将此代码添加到开关或按钮)。我得到了我所期望的结果:比例在:原始视图大小的 0.55 倍的视图和原始比例的视图之间切换。也可以按我的意愿缩放 someView 的子视图。无穷无尽。完美的。
//tranformScale 1
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.55, 0.55 );
//tranformScale 2
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0 );
问题是我想在 iOS 设备进入横向时使用此代码(或类似代码)来缩放 self.view 的子视图,以使子视图适合横向屏幕(并在进入时备份肖像)。它几乎可以工作,但由于某种原因,而不是为正在缩放的视图的框架输出圆形值(就像使用按钮调用转换的测试发生的那样),逐渐产生了奇怪的值。最终,大约 4 次旋转后,子视图飞离屏幕。我怀疑它与 self.view 改变形状有关,但话又说回来,当我记录 self.view 的框架时,它的形状是非常可预测的。
顺便说一下我使用 autoresizingMask 灵活边距使视图居中,而不是使用自动布局。或许我应该用另一种计算方式使视图居中?
感谢阅读!
【问题讨论】:
-
您可以设置
someView.transform = CGAffineTransformIdentity;将其重置为无转换。更容易理解。 -
谢谢,但即使这样我得到了奇怪的结果。
-
您知道应用非恒等变换时帧是假的吧?来自 UIView 上框架的文档:“警告:如果变换属性不是身份变换,则该属性的值未定义,因此应被忽略。”
-
大卫 - 你能澄清你的说法吗?这是否意味着转换必须与“原始”相反才能使帧准确(这意味着多次/堆叠转换会产生不好的结果?我也在处理多次转换并得到不寻常的结果。) >
标签: ios uiview autoresize cgaffinetransformscale