在上一節中,我們使用autosizing+代碼的方法使三個view按我們的需求顯示在應用程式中,這一節,我們使用Auto Layout來實作同樣的功能。
轉載請注明出處:http://blog.csdn.net/yamingwu/article/details/44132637
删除willAnimateRotationToInterfaceOrientation方法并enable auto layout:
編譯運作程式,并将裝置旋轉至橫屏狀态:
這并不是我們想要的效果。
下面,我們開始使用Auto Layout。選中綠色和黃色的view,從Xcode的Editor菜單選擇Pin\Widths Equally和\Pin\Horizontal Spacing。橙色的T型代表view之間的限制(constraints)。此時,我們設定這兩個view是等寬的,并且在它們之間有一個水準距離的限制。
接下來,我們執行以下操作,為整個界面添加自動布局限制。
對于左側的view,選擇Editor\Pin菜單,添加以下限制:
- Top Space to Superview
- Leading Space to Superview
對于右側的view,選擇Editor\Pin菜單,添加以下限制:
- Top Space to Superview
- Trailing Space to Superview
對于下方的view,選擇Editor\Pin菜單,添加以下限制:
- Leading Space to Superview
- Trailing Space to Superview
- Bottom Space to Superview
至此,我們将看到如下限制:
但是,還有一些限制是橙色而不是藍色的,這就意味着我們的布局還沒有完成。自動布局沒有足夠的限制來計算view的位置和大小。我們需要添加更多的限制,讓所有的限制都成為藍色。
同時選中3個view,從Editor菜單選擇Pin\Heights Equally。再選中左側的view和下面的view,選擇Editor\Pin\Vertical Spacing。
此時,我們的Interface Builder如下圖所示,所有的限制都是藍色了。
編譯運作,并将裝置旋轉為橫屏,效果如下:
這正是我們所期望的效果。使用自動布局,我們不需要任何的代碼,而是通過設定view之間的限制,來實作需求。
我們來回顧一下,我們添加了什麼樣的限制:
- 左上的view和右上的view擁有相同的寬度。
- 左上的view和右上的view之間有20點的水準間隔。
- 所有3個view都有相同的高度。
- 上面的兩個view和下面的view之間有20點的間隔。
- 這3個view和螢幕的邊界之間有20個點的間隔,包括上、下、前、後四個方向。
選中左上view後右上view之間的水準間距限制:
可以看到,限制的屬性也是可以修改的,因為限制也是一個真實的類(NSLayoutConstraint)。我們修改Constant字段為100,将左上view和右上view之間的間距設定為100,程式執行效果如下: