IOS開發學習筆記038-autolayout 自動布局 界面實現


storyboard/xib文件中實現自動布局 autolayout 

1、注意事項

  • autolayout和frame屬性是有沖突的,所以如果准備使用autolayout,就不要再代碼中對控件的frame屬性進行操作。

  • 設置autolayout必須設置完全,必須包括位置信息和尺寸信息。也就是說必須有寬高和坐標位置,缺一不可。

 

2、簡單示例

  兩個view(redView和blueView),等高等寬,redView距離左邊和下邊間距都是20,距離blueView間距也是20.blueView距離右邊和下邊都是20.

 

 

  2.1、autolayout的相關屬性設置

 

  2.2、redView的設置,blueView類似

要保證每個控件都可以計算出來位置信息和尺寸信息。

 

blueView的約束設置

 

  2.3、效果預覽

任意旋轉,始終處於底部,並且間距保持一致。

3、復雜示例

  實現效果如下:

  View中有四個UIView

  每個UIView中又包含兩個控件UIImageView和UILable。

  UIimageview位於正中心,UILable位於底部。

  

 

  3.1、先實現內部控件的自動布局

分析如下:

  UIImageView和UIlable的自動布局。

UIImageView的相關約束信息。

UIlable的相關約束信息

 

  3.2、添加四個相同的UIView,並設置相關約束

其中一個redView的約束信息

 

看效果,在不同尺寸下,和旋轉狀態下,效果一致。

 

總結:

這個全部是通過操作添加約束的,難以用文字表達清楚,看源代碼吧(最后邊)。

 

 

4、特殊情況UIlable

設置UILable的約束條件,它只需指定位置和寬度,高度系統會根據文字長度自動計算。
比如一下程序:

 兩個UIView中間是一個UIlabel。現在文字長度是這樣。然后添加一個方法實現單擊屏幕,使得文字內容變短。

 1 /**
 2  *  觸摸屏幕調用這個方法
 3 
 4  */
 5 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 6 {
 7     
 8     // 添加動畫效果
 9     [UIView animateWithDuration:0.5 animations:^{
10          _lab.text = @"asdfasfasdfadsf";
11         // 要執行動畫的view
12         [self.view layoutIfNeeded];
13     }];
14 }

 

單擊屏幕后UILable會自動縮小高度。不會是固定大小。

 

 

源代碼參考:

  http://pan.baidu.com/s/1qW60b5y

 

 

 

今日如此,明日依舊。

2015-06-02

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM