我有一個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'中執行。 –