我在autolayout
使用XCode6
。
我已将以下约束应用于scrollview
。
我尝试在iPhone 4Inchs设备的 - viewDidLoad
和 - viewWillAppear
方法中访问此滚动视图的框架。这里的问题是,scrollview的宽度在Log中显示为600。但是在4Ichs设备中宽度应为300,因为我使用autolayout
。
似乎autolayout
将在一段时间间隔后适用。它在 - viewDidAppear
方法中显示正确的宽度为300。
有没有办法在viewDidLoad
和 - viewWillAppear
方法中访问原始框架?
提前致谢。
答案 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];
但这依赖于应用程序性能。