2013-10-29 31 views
0

我有一个使用UIPageViewController呈现图像的图像幻灯片查看器。 图像视图查看器ViewController非常简单 - 包含含有UIImageView的UIScrollView的顶级视图。在最初的图像展示或设备旋转时,图像被纵向拟合到视图尺寸和居中。它工作正常,除了在iOS 7和iOS 6上发生的问题。在基于UIViewPageController的幻灯片放映中旋转的问题

如果我正在进行平移以更改图像和两个图像在屏幕中间,然后我有时会旋转设备(可能总是?)弄乱一个或多个图像的显示。以前居中的图像出现在屏幕上的错误位置,并且在旋转和放大时仍然存在。

我唯一能找到的错误发生这种情况时,UIImageView的中心属性实际上并不是帧的中心。如果我将viewDidAppear中的UIImageView的中心属性更改为可能缩放的UIImageView的中心,则图像在所有情况下都显示为正确。

这是否听起来像我正在犯的一些熟悉的错误的影响?

编辑回应这个问题:
我不这样做在willRotate或didRotate方法什么。
viewDidLayoutSubviews我将图像放入当前UIScrollView边界(这是完整的顶层视图,这是全屏)并将其居中。这照顾了最初的演示和旋转。在“正常”旋转情况下我看不到任何问题。只有当我使用两个pageViewController的子视图同时在屏幕上同时旋转时,才会出现问题。我可以在所有情况下“解决”问题,但肯定我做错了什么。

编辑2
我发现了另一种异常情况,在旋转设备时出现频率较低,同时屏幕上显示2幅图像。最好通过一个例子来解释:

页面视图控制器正用于显示A B C从左到右的一系列图像中的一幅图像。图像B在屏幕上。在向左平移的过程中,您会看到图像A和B的一部分。如果平移到图像A几乎完成,即B几乎在屏幕外,并且旋转设备,则图像B通常会在屏幕上结束(它永远不会旋转部分平底锅),但有时图像C最终显示 - 就好像你已经在另一个方向上平移一样。其他人看到这种行为?

回答

0

你在做什么在你的UIViewController准备轮换?

– willRotateToInterfaceOrientation:duration: 

然后,一旦轮换完成,你将如何恢复?所以你有机会来准备旋转,然后把一切都恢复正常,一旦它完成专门提供

- didRotateFromInterfaceOrientation 

这些调用。