我有一个应用程序,使用UITabController
,每个标签是UINavigationController
。我的UINavigationControllers
之一的根是UIViewController
。在UIViewController中布置和设定子视图的大小
在该视图控制器的视图中,我想布置一些子视图,但我很困惑,在哪里如何将它们放在一个独立于分辨率的方式(即不是硬编码值,如320px,480px, 44px等)。
当视图完全加载并呈现在垂直iPhone上时,其高度将为367px = 480 - 20(状态栏) - 44(导航栏) - 49(标签栏)。
在视图控制器中,我目前在viewDidLoad
方法中创建了所有子视图。但是,看起来在这种方法中,视图的当前高度是460px(self.view.bounds.size.height
)。所以在设置我的子视图时,我无法正确计算任何东西的大小。
内viewWillAppear:
方法,认为不知道这是适当的大小,但是这意味着设置&每个视图会出现时间(例如标签的变化来计算子视图的框架或子视图控制器导航堆栈上弹出。
是在viewWillAppear:
?
适当做这个布局的唯一方法我已经使用自动尺寸属性尝试(父母的autoresizesSubviews
& autoresizingMask
),但他们似乎并没有在所有的工作!?做这些只有在视图全部设置后才能生效,然后调整大小(手动/方向更改?)。
如果有人能告诉我为什么autoresizing不起作用,以及如何通过不对任何大小进行硬编码来最好地解决问题,我将不胜感激。
快速说明,UIViewController没有,也没有调用layoutSubviews。这是UIView上的一个方法。但是,您可以制作一个名为layoutSubviews的方法,并从viewWillAppear调用该方法: – casademora 2011-04-10 19:27:07
也没有“loadViews”。我认为你的意思是“viewDidLoad”,在这种情况下,值得一提的是在viewDidUnload中也释放这些视图。 – DougW 2011-06-01 00:19:07
有一个loadView方法,但viewDidLoad通常是添加子视图最方便的地方 – 2011-09-04 00:42:23