[AutoLayout Problem] Views with NavigationBar or Tabbar.
假設我在一個VC的xib上有些基本的view(假設有個ScrollView,並將constraints拉好了),
a.在viewdidload的時候在scrollview裡透過語法加上所需的view以及constraints,
b.在viewdidLayoutSubviews做好subviews排版設定,
執行後就會看到scrollview裡面的view位置不會是你想像的排版,透過程式檢查scrollview以及subviews的位置與大小都沒有問題,但是呈現出來就是怪怪的,似乎會多出navigationBar 的長度。
原因就是IOS7鼓勵全螢幕延伸,
在UIViewController的UIExtendEdge的屬性預設是UIRectEdgeAll,
所以UIViewController裡面的Tableview or Scrollview都會被自動延伸到那些俱有透明度的navigation bar 或是 tabbar ,
因此在UIViewController裡重新設定如下:
self.edgesForExtendedLayout = UIRectEdgeNone;
而IOS7預設下在UIViewController裡面的UIScrollview都會被設定為自動調整內容大小,因此在設計上如果有使用毛玻璃效果會讓scrollview的contentsize多一層tabbar or navigationbar的高度,
所以在UIViewController設定如下即可:
self.automaticallyAdjustsScrollViewInsets = NO;