2017-07-26 171 views
0

所以我得到這個UIScrollView的是有高度限制常數,且寬度約束到根視圖的寬度,但是當我在viewWillAppear中()設置斷點,我發現,UIScrollView的寬度並沒有改變,在所有的不管是什麼樣的手機(5s,7和7 Plus)我測試過。爲什麼UIScrollView的框架不會受到約束的影響?

我讀的UIScrollView並沒有受到限制,但爲什麼是這樣的話?

StoryBoard Variable Watcher *請注意,我在iPhoneSE運行,但imageScrollView的寬度爲414,這是iPhone 7加屏幕的寬度。

+1

你讀什麼是不正確的。顯示一些代碼或故事板。另外,設置滾動視圖的背景顏色以瞭解它的佈局方式。 – Fogmeister

+0

嘿!我上傳了故事板和可變觀察者的截圖。 –

回答

0

盡我的理解,會發生什麼情況是,該視圖但是加載,那麼新的容器視圖尺寸應用,此後約束重新計算和子視圖進行重新佈局,當每個那些步驟發生有點不透明。根據我的經驗,當調用viewDidAppear()時,正確的大小已到位,但在viewDidLoad()viewWillAppear()中,您將從Interface Builder中獲得「設計時」大小。 didLayoutSubviews()也是一種可能性,但請記住它可以在視圖控制器的整個生命週期中多次調用。

「正確的」方法是在整個過程中使用Autolayout(使用Autolayout和UIScrollView有一個Technical Note),但是它可能有點乏味。對於不太患者,人們可以通過在容器視圖中設置一框架和調用updateConstraintsIfNeeded()和layoutIfNeeded(申請尺寸),也可以猜測基於所述一個UIWindow尺寸元件的最終尺寸(參見UIView.window或UIApplication.keyWindow)父視圖控制器視圖的界限。

祝你好運!

+0

謝謝!有空的時候我會看你的答案。 –

相關問題