我正在使用iOS 4.3。
我有一个UIViewController,其视图只有一个UIToolbar和一个覆盖视图其余部分的子视图。主UIView有弹簧和支柱,使其符合任何形状,子视图也可以。默认情况下,xib处于纵向方向。
我把这个UIViewController放到我的UISplitViewController的右侧。在我显示这个视图控制器之前,我的iPad处于横向状态,并且在整个时间内保持横向...所以要清楚,我不会改变方向。
xib是768w和1004h,所以我的子视图是768w和960h。
在-viewDidLoad
我的子视图是768x960。
在-viewWillAppear
我的子视图是768x960。
在-viewDidAppear
我的子视图是768x960。
但是当我真正在我的iPad上看到它时,UISplitViewController的右侧是704px宽(应该是这样),我的视图以及我的子视图可以验证只有704px宽。
但是,在代码或视图控制器生命周期中,我无法查询self.view
或我的子视图,并且看到宽度为704px。
我需要根据整体视图的大小进行一些更改,因为我的子视图是UIScrollView,我想根据self.view
的REAL大小更改scrollView.contentSize。
在View Controller生命周期中必须有一些我可以获得我的视图的真实大小。我尝试了frame
和bounds
,但他们都一直显示768x906。
NSLog(@"scroll view frame=%@ bounds=%@", NSStringFromCGRect(self.scrollView.frame), NSStringFromCGRect(self.scrollView.bounds));
NSLog(@"view frame=%@ bounds=%@", NSStringFromCGRect(self.view.frame), NSStringFromCGRect(self.view.bounds));
UIViewController *detailVC = [self.splitViewController.viewControllers objectAtIndex:1];
NSLog(@"splitview frame=%@ bounds=%@", NSStringFromCGRect(detailVC.view.frame), NSStringFromCGRect(detailVC.view.bounds));
答案 0 :(得分:0)
您应该使用 UIViewController 方法viewWillLayoutSubviews
。这是更新滚动视图的最佳位置。
请记住,您的视图控制器将以纵向方式启动。在某些时候它会旋转到风景。出于调试目的,您可能希望覆盖willRotateToInterfaceOrientation:duration:
和didRotateFromInterfaceOrientation:
方法。