在iOS8-Xcode6中Autolayout不会立即更新帧

我在autolayout中使用autolayout XCode6

我已经将以下约束应用于scrollview

在这里输入图像说明

我试图在iPhone 4Inchs设备的viewDidLoadviewWillAppear方法中访问这个scrollview的框架。 这里的问题是,滚动视图的宽度在日志中显示600。 但是,我使用autolayout的宽度应该是4英寸设备中的300。 似乎自动autolayout将适用于一段时间之后。 它在 – viewDidAppear方法显示正确的宽度为300。

有什么办法可以访问 – viewDidLoad和 – viewWillAppear方法的原始框架?

提前致谢。

自动布局不会为您提供“正确的”框架大小,直到布局通过发生。 viewDidLoad还为时过早,而且我的头顶willAppear可能会出现。 viewDidLayoutSubviews是正确的地方。

把这段代码放在你的viewDidLoad()

 self.view.setNeedsLayout(); self.view.layoutIfNeeded(); 

在访问scorllView.frame.size.width之前

从viewDidLoad和viewWillAppear其显示与界面生成器的维度相同。 如果您的应用程序在scrollView框架上传递(如果您希望它们在viewDidAppear之前)在呈现之前调用viewController实例view方法。

 UIViewController *myVC = [[UIViewController alloc]init]; [myVC view] [self.navigationController pushViewController:myVC]; 

但是这依靠应用程序的性能。