【发布时间】:2011-01-03 12:12:39
【问题描述】:
我有一个带有UITabController 的应用程序,每个选项卡都是UINavigationController。我的UINavigationControllers 之一的根是UIViewController。
在该视图控制器的视图中,我想布局一些子视图,但我不知道在哪里以及如何以独立于分辨率的方式布置它们(即不是硬编码值,例如 320px、480px、44px等)。
当视图完全加载并呈现在垂直 iPhone 上时,它的高度将为 367px = 480 - 20(状态栏)- 44(导航栏)- 49(标签栏)。
在视图控制器中,我目前在viewDidLoad 方法中创建所有子视图。但是,在此方法中,视图的当前高度似乎是 460px (self.view.bounds.size.height)。所以在设置我的子视图时,我无法正确计算任何东西的大小。
在viewWillAppear: 方法中,视图确实知道它的大小合适,但这意味着每次视图出现时都要设置和计算子视图的框架(例如选项卡更改或从子视图弹出)导航堆栈上的控制器。
在viewWillAppear: 中正确布局是唯一的方法吗?
我曾尝试使用自动调整大小属性(父母的autoresizesSubviews 和autoresizingMask),但它们似乎根本不起作用!?这些是否只有在视图全部设置好然后调整大小(手动/方向更改?)后才会生效。
如果有人能告诉我为什么自动调整大小不起作用,以及如何通过不对任何大小进行硬编码来最好地布局,我将不胜感激。
【问题讨论】:
标签: iphone cocoa-touch uikit uiview