1.IOS(swift)-autolayout 與 scrollView

UIScrollView 和 Auto Layout

iPhone 5 剛出來的時(shí)候,大部分不支持橫屏的 App 都不需要做太多的適配工作,因?yàn)槠聊粚挾葲]有變,table view多個(gè)cell也不需要加 code。但是在iPhone 6和iPhone 6 Plus發(fā)布以后,多分辨率適配終于不再是Android開發(fā)的專利了。于是,從 iOS 6 起就存在的 Auto Layout 終于有了用武之地。

在Auto Layout是一個(gè)很特殊的 view,對于 UIScrollView的 subview 來說,它的leading/trailing/top/bottom space是相對于UIScrollView的contentSize而不是bounds來確定的,所以當(dāng)你嘗試用 UIScrollView和它 subview 的leading/trailing/top/bottom來互相決定大小的時(shí)候,就會(huì)出現(xiàn)「Has ambiguous scrollable content width/height」的 warning。

正確的姿勢是用UIScrollView外部的view或UIScrollView本身的width/height確定subview的尺寸,進(jìn)而確定contentSize。因?yàn)?UIScrollView本身的leading/trailing/top/bottom變得不好用,所以我習(xí)慣的做法是在UIScrollView和它原來的subviews之間增加一個(gè)content view,這樣做的好處有:

  1. 不會(huì)在 storyboard里留下 error/warning為subview提供leading/trailing/top/bottom,方便subview的布局
  2. 通過調(diào)整content view的size(可以是 constraint 的 IBOutlet)來調(diào)整 contentSize
  3. 不需要hard code與屏幕尺寸相關(guān)的代碼
  4. 更好地支持rotation

示例下載:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容