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

时间:2014-10-09 09:38:03

标签: ios ios8 autolayout xcode6

我在autolayout使用XCode6

我已将以下约束应用于scrollview

enter image description here

我尝试在iPhone 4Inchs设备的 - viewDidLoad和 - viewWillAppear方法中访问此滚动视图的框架。这里的问题是,scrollview的宽度在Log中显示为600。但是在4Ichs设备中宽度应为300,因为我使用autolayout。 似乎autolayout将在一段时间间隔后适用。它在 - viewDidAppear方法中显示正确的宽度为300。

有没有办法在viewDidLoad和 - viewWillAppear方法中访问原始框架?

提前致谢。

3 个答案:

答案 0 :(得分:5)

自动布局没有给你"权利"帧大小,直到布局传递发生。 viewDidLoad太早了,我的头顶willAppear可能也是如此。 viewDidLayoutSubviews是正确的地方。

答案 1 :(得分:2)

将此代码放在viewDidLoad()

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

访问scorllView.frame.size.width

之前

答案 2 :(得分:1)

从viewDidLoad和viewWillAppear中,它显示与界面构建器的维度相同。如果您在scrollView框架上进行应用程序中继(如果您在viewDidAppear之前需要它们),请在呈现之前调用viewController实例view方法。

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

但这依赖于应用程序性能。