我在 wAny/hAny UI 中有一个 UIScrollView
,我将它的所有空间设置为其 super View ,从而得到 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 而不是 View 的实际大小,导致 View 之间出现上述间隙。如果我将 frame.origin.x 硬编码为 pageNumber*414
(iPhone 6 Plus 屏幕宽度)一切正常,但这肯定不是最好的方法。
我也可以只获取屏幕宽度,因为 UIScrollView 完全填充它,因此会产生相同的值,但我觉得这不是好的代码。尽管这对我的应用程序来说绝对足够了,但我真的很想了解如何在 Objective-C 中正确完成此操作。此外,对于 iOS 9 即将推出的分屏模式,这会导致意外行为。
那么我还能用什么来获取框架的实际大小呢?
最佳答案
您无法在 viewWillAppear:
中找到 View 大小,因为系统在该方法返回之前不会布置 View 。您最早可以在 View Controller 中获得正确的 View 大小是在 viewDidLayoutSubviews
中。
关于ios - Obj-C controller.view.frame 获得真实大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32363091/