1

如果我的应用同时支持纵向和横向模式并且我以横向模式启动我的应用,我会看到 UIViewController 的视图框架大小仍然是 viewDidAppear 中纵向的尺寸。(例如:768x1024 而不是 748x1024)

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

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

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

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

4

2 回答 2

0

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

观看此视频了解更多详情

于 2013-03-10T22:37:04.817 回答
-1

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

self.view.bounds 

当您旋转设备时,您会看到它发生了变化。

您需要阅读 View Programming 指南:

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

这是根本。

于 2013-03-10T22:32:46.697 回答