我有一个UIScrollView
在wAny/hAny用户界面,我将它的所有空间设置为其超视图,导致标准大小600x600。Obj-C controller.view.frame获取实际大小
因为这是具有多个页面的应用程序,我需要做一些数学为滑动到下一个页面(水平),而且是一个代码块,我使用这会导致空格在页面之间:
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即将推出的分屏模式,这会导致意想不到的行为。
那么还有什么我可以用来获得框架的实际大小?
你用什么方法获得视图的大小?系统不会在布局通过之前设置大小,这发生在'viewDidLoad'和'viewWillAppear:'之后。 –
哦,这是有道理的。在我看来,我做到了这一点,当然它不能真正“知道”现在的价值。那么你会推荐我把它放在viewDidAppear中吗?编辑:好吧,刚刚做了,现在启动应用程序后有一个小小的延迟,会看到我能做些什么,但我会确定这一点。作为答案,我会打勾 – user2875404
如果你想在你的视图控制器中做到这一点,在'viewDidLayoutSubviews'中执行。 –