【发布时间】:2012-10-18 02:07:42
【问题描述】:
我使用的是 iOS 4.3。
我有一个 UIViewController,它的视图只有一个 UIToolbar 和一个覆盖视图其余部分的子视图。主 UIView 具有弹簧和支柱,以使其符合任何形状,子视图也是如此。 xib 默认是纵向的。
我把这个 UIViewController 放在我的 UISplitViewController 的右侧。在我显示此视图控制器之前,我的 iPad 处于横向,并且一直保持横向......所以要清楚,我不会改变方向。
xib 是 768w 和 1004h,所以我的 subview 是 768w 和 960h。
在-viewDidLoad 我的子视图是 768x960。
在-viewWillAppear 中,我的子视图是 768x960。
在 -viewDidAppear 我的子视图是 768x960。
但当我在 iPad 上实际看到它时,UISplitViewController 的右侧是 704px 宽(应该是这样),而我的视图和子视图可验证只有 704px 宽。
但是,在代码或视图控制器生命周期中,我无法查询self.view 或我的子视图并看到宽度为 704 像素。
我需要根据我的整体视图的大小进行一些更改,因为我的子视图是 UIScrollView,我想根据我的self.view 的真实大小来更改 scrollView.contentSize。
在视图控制器的生命周期中必须有某个地方可以让我获得视图的真实大小。我试过 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));
【问题讨论】:
-
添加一个按钮,触发记录视图大小的操作。点击按钮是否正确?
-
是的。在视图真正可见并且我点击一个按钮后它是正确的。
-
无法在iOS 5或iOS 6下的模拟器上重现。小测试项目在这里:github.com/mayoff/stackoverflow-12946064
viewDidAppear:中的框架是正确的。 -
对不起,我忘了说我是在 iOS4.3 模拟器中运行的。我已经更新了我的帖子。
-
它在 iOS 5 中的行为是否有所不同?
标签: ios uiviewcontroller uiscrollview