天天看點

iOS自動布局-Autoresizing

iOS下自動布局有兩種技術可用:Autoresizing和Auto Layout。該文先說下Autoresizing,接下來再寫一篇文章分析Auto Layout。

Autoresizing是子視圖相對父視圖的布局,子視圖之間不能添加布局限制,這也是Autoresizing的局限性。是以在iOS6+中引入了更加複雜、更加強大的Auto Layout。Autoresizing可以通過可視化界面調整也可以代碼設定。

可視化界面:

iOS自動布局-Autoresizing
iOS自動布局-Autoresizing
iOS自動布局-Autoresizing

該設定的意思是sub view相對super view:上、左方向固定,寬度随着父視圖拉伸。

有些人可能在較高版本(xcode 4)中找不到這個界面,這是因為從iOS6、xcode 4之後蘋果推薦使用Auto Layout,它和Autoresizing是沖突的,需要将其勾選掉之後Autoresizing才可用。

iOS自動布局-Autoresizing
iOS自動布局-Autoresizing
iOS自動布局-Autoresizing

勾選掉的Auto Layout和Size Classes在後續博文中再詳細介紹,這時候再看就可以發現Autoresizing選項了。

代碼設定:

UIView有個屬性autoresizingMask,對應6個非預設枚舉值,和可視化界面分别對應。但是,這兩者是有差別的,如下:

iOS自動布局-Autoresizing

首先,該枚舉值是位運算得到的,說明可以對限制進行組合使用。剛剛說到,通過代碼設定和可視化界面是有差別的,如:

UIViewAutoresizingFlexibleLeftMargin表示左邊随着父視圖自動縮放保持右邊和父視圖的距離不變,這和可視化界面設定正好相反,不可混淆。

總結:由于Autoresizing隻能相對父視圖進行限制,子視圖之間不可以,在iOS6之後官方更推薦使用Auto Layout。在開發中,如果能滿足需求,可以使用Autoresizing,較複雜的情況使用Auto Layout。