不管是做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 感謝作者