1

我的应用程序(针对 iOS 5+,使用 ARC 和故事板,用于 App Store)使用了一些旋转变换。存在一个错误,其中通话状态栏(例如,如果有正在进行的电话通话或麦克风录音)会导致视图发生变化,超出转换描述的范围。为了诊断这个问题,我编写了一个简单的测试应用程序*,它使用视图的转换。

最初(在模拟器 5.0 和 6.1 以及硬件 6.1 中重现)它看起来像

在此处输入图像描述

旋转20度后:

在此处输入图像描述

还可以!但是当我切换通话状态栏(command-T)时会发生一些奇怪的事情:

在此处输入图像描述

好的,如果我关闭通话状态栏,它可能会恢复

在此处输入图像描述

灾难!让我们尝试将视图的变换重置为CGAffineTransformIdentity

在此处输入图像描述

哦,我让自己陷入了什么?!

无论如何,我是 CGAffineTransforms 和整个 Quartz 2D 的新手,所以如果有人能告诉我为什么会这样,我将不胜感激。如果您想四处逛逛,可以在 Github * 上找到该代码。

*请注意,代码已使用解决方案进行了更新。

4

1 回答 1

1

发生这种情况是因为切换通话状态栏会更改视图框架,它(如果设置为自动调整子视图)会相应地自动调整子视图。如果转换后的视图有任何灵活的边距,它可能会像上面的屏幕截图所示倾斜。为了使它不会像那样倾斜,打开所有四个支柱。

于 2013-02-14T00:30:18.540 回答