旋转iPad时,UIView父窗口的框架和装订尺寸

时间:2010-08-12 20:04:44

标签: iphone cocoa-touch ipad uiview

我在触摸手势完成后调用了以下代码行:

CGRect parentBounds = self.view.bounds;
CGRect parentFrame = self.view.frame;

当iPad以垂直方式放置时,parentFrame和parentBounds的尺寸类似于w:768 h:1004(或接近该值),但是当我旋转parentBounds时为1024x748而parentFrame为768x1024。 这种行为是否正常?我以为我理解了框架和边界的概念(以及它们如何相互关联)......但现在我真的很困惑。

有人能解释旋转发生时窗口(超视图)的边界和边界发生了什么吗?

3 个答案:

答案 0 :(得分:2)

窗口不会改变方向;根视图的确如此。它通过应用视图转换(self.view.transform)来实现。如果transform不是CGAffineTransformIdentity,你不应该调用frame。

答案 1 :(得分:0)

这不是一个完整的答案,但如果你没有得到更好的结果可能会有所帮助:当旋转设备时,顶级窗口的框架不会改变。相反,应用一个转换,将所有内容旋转90度(或180度),然后调整子视图的大小以适应新的坐标系。

答案 2 :(得分:0)

来自Apple的PhotoScroller示例代码:

  

我们必须使用分页滚动视图的边界而不是帧来计算页面放置。当设备处于横向时,框架仍将处于纵向状态,因为pagingScrollView是根视图控制器的视图,因此其框架位于窗口坐标空间中,永远不会旋转。然而,它的界限将是横向的,因为它应用了旋转变换。

简而言之,视图的帧不受设备旋转的影响,但其边界是。

相关问题