iOS UI的動態布局


不管是做iOS還是Android的開發,我想UI這塊都是個大麻煩,任何客戶端編程都是如此,我們要做的就是盡量減少我們工作的復雜度,這樣才能更輕松的工作。

    在ios開發中Xcode雖然自帶了強大的IB(Interface Builder)用來開發UI,但這只是靜態的,遇到復雜的界面還是需要用代碼來動態的布局。
  1. 例如常常會有動態內容高度和寬度的計算。
  2. 幾個視圖的排版。
  3.還有的視圖是根據內容情況進行顯示的。

  比如一個商家頁面有活動的時候,會顯示活動,沒有活動的時候這個視圖是隱藏的,這樣布局起來就會非常麻煩,在這里我們都可以很簡單的解決,只需要幾行代碼而已。

    例如下面這種情況:

         

 

 

我們經常要根據內容去動態計算控件的高度,比如一個UILabel控件,常常要顯示多行內容,並且計算出總高度,如果每個UILabel要多行顯示,都要寫這么一段代碼是非常痛苦的,看代碼如下:
    

我想大家一定寫過很多這樣的代碼吧,那么我可以告訴你,以后你只需要寫一行代碼即可:

    

當然這里只是把上面那段代碼進行了封裝而已,沒什么大不了的,當然以后還有很多很多的這樣的封裝:
    

你還在使用CGRect frame = ...,然后去設置坐標位置,寬度和高度嗎?

如果有了這個呢,left, top,bottom,right, width, height的封裝,是不是布局起來更方便了呢?

這里self 是一個UIView,當添加了label和photoView之后,調用[self autoHeight]就可以自動計算並設置self的高度。

下面是上面幾個方法的源碼:

頭文件:

實現類文件:

 

 

在UIView作為許多子控件的容器的時候,首先我們需要動態的計算出UIView下的所有子控件的高度,並布局排列好,然后我們還要把作為容器的UIView的高度調整到剛好包裹着所有子控件,不會過矮,也不會過高,這個在開發中也是個十分麻煩的事情,這里我們要怎么做呢?

      

    看上圖除了要將UILabel自適應高度(上一篇文章已講)以外,還要將在UILabel外的那個白色的框,即一個帶白色背景色的UIView的高度也進行

自適應,如果這要寫代碼去做的畫,也比較麻煩。

    看看下面的代碼如何解決:

  

      這里顯示活動內容的UILabel名字叫_huodongLabel,顯示推薦內容的UILabel叫_tuijianContentLabel
     顯示活動的UIView叫_secondView,  顯示推薦的UIView叫_thridView,

    先計算子控件的高度,然后再計算付控件的高度,這里就能達到整個UIView自適應高度了,僅僅只需2行代碼。

    代碼貼出來:

    

    

 

轉自:http://blog.csdn.net/keezhong/article/details/20455541 感謝作者


免責聲明!

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



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