我在wAny / hAny UI中有一个UIScrollView
,我将它的所有空格都设置为超级视图,结果标准尺寸为600x600。
因为这是一个有多个页面的应用程序,我需要做一些数学操作才能刷到下一页(水平),并且我正在使用的一个代码块导致页面之间出现空格:
CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * pageNumber;
frame.origin.y = 0;
controller.view.frame = frame;
[self.scrollView addSubview:controller.view];
这里的问题是frame.size.width
总是返回600而不是视图的实际大小,导致视图之间的间隙。如果我将frame.origin.x硬编码为pageNumber*414
(iPhone 6 Plus屏幕宽度),一切都很完美,但这肯定不是最好的方法。
我也可以获得屏幕宽度,因为UIScrollView完全填充它,因此会产生相同的值,但我觉得这不是好的代码。虽然这对我的应用程序来说肯定是足够的,但我真的想学习如何在Objective-C中正确完成。此外,关于iOS 9即将推出的分屏模式,这将导致意外行为。
那么我还能用什么来获得框架的实际尺寸?
答案 0 :(得分:2)
您无法在viewWillAppear:
中找到视图大小,因为系统在该方法返回之前不会布置视图。您最早可以在视图控制器中获得正确的视图大小viewDidLayoutSubviews
。