9

我认为我的问题可以概括为如何存储和重置视图的转换。但是也许解释我的情况可能会有所帮助。

如果我将下面的变换一个接一个地应用到视图中(就像我将此代码添加到开关或按钮一样)。我得到了我所期望的结果:比例在:原始视图大小的 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 灵活边距使视图居中,而不是使用自动布局。也许我应该用另一种类型的计算来集中视图?

谢谢阅读!

4

2 回答 2

34

我这样做了,效果很好。

self.imageview.transform = CGAffineTransformIdentity
于 2014-11-13T14:38:51.037 回答
7

(1) 应用transforms后一定不要设置或获取任何帧数据,不支持,会产生不可预知的结果;

(2)关闭你的自动调整蒙版弹性边距和中心,如下所示:

   view.center = CGPointMake(view.superview.bounds.size.width/2, 
                             view.superview.bounds.size.height/2);

(注意在视图处于全尺寸时应用居中。即,如果是调整大小变换,则在变换之前,如果是恒等变换,则在变换之后)

于 2013-01-08T14:41:12.330 回答