获取与当前方向相关的视图框架大小

时间:2013-03-10 22:28:54

标签: iphone ios uiviewcontroller

如果我的应用支持Portrait&横向模式和我在Landscape中启动我的应用程序,我看到UIViewController的视图框架大小仍然是viewDidAppear中Portrait的尺寸。 (例如:768x1024而不是748x1024)

当我创建并显示viewController时,我看到事件按此顺序出现:

shouldAutorotateToInterfaceOrientation // viewcontroller hasn't received rotate event yet
viewWillLayoutSubviews
viewDidLoad
shouldAutorotateToInterfaceOrientation // viewController now asked to change orientation
viewDidAppear
viewWillLayoutSubviews

通过这些事件序列,视图的帧大小仍然是Portrait的大小(尽管边界是正确的)。

我什么时候可以期望正确设置视图的帧?

2 个答案:

答案 0 :(得分:0)

您必须使用Cocoa Auto Layout system来定义用户界面元素的布局约束。约束表示用户界面元素之间的关系,例如“这些视图从头到尾排列”或“此按钮应该与此拆分视图子视图一起移动。”在布置用户界面时,约束满足系统以如下方式排列元素:最接近约束。

观看this video了解更多详情

答案 1 :(得分:-1)

当您旋转设备时,框架不会旋转,只有框架内的边界会旋转。检查使用:

self.view.bounds 

您将在旋转设备时看到它发生变化。

您需要阅读“查看编程指南”:

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40009503-CH2-SW6

这是基本的。