1、內部子控制項
2、按鈕拉伸問題
2-1、**拉伸
2-2、無**拉伸
如果想要改變按鈕內部子控制項的屬性,只能自定義按鈕
內邊距
// 設定按鈕內容的內邊距(影響到imageview和titlelabel)
@property(nonatomic) uiedgeinsets contentedgeinsets;
// 設定titlelabel的內邊距(影響到titlelabel)
@property(nonatomic) uiedgeinsets titleedgeinsets;
// 設定imageview的內邊距(影響到imageview)
@property(nonatomic) uiedgeinsets imageedgeinsets;
調整內部子控制項的frame的方法1但是這樣寫很麻煩,而且有個問題:
如果兩個方法內部的引數互相依賴,但是卻不清楚兩個方法的執行順序,所以容易出現異常。
然後建議使用調整內部子控制項的frame方法2,在layoutsubviews中設定子控制項的frame。
按鈕其實不需要新增子控制項的,因為按鈕內部有兩個子控制項uiimage和uilabel,可以直接使用,但是對於這兩個子控制項使用有一些注意點:uibutton的子控制項的iamgeview.image和titlelabel.text不能直接設定值,因為這兩個值(或許還有別的值,可以通過看原始碼檢視注釋)是需要有設定狀態屬性值,如果沒有設定狀態,直接訪問其屬性更改會失效。
所以,以後按鈕內建子控制項的屬性,要先確認是否需要分狀態顯示的。
如果想要該自己改變子控制項titilelabel的字型,直接拿出font賦值,因為font不分狀態
**拉伸
在按鈕使用了背景之後,特別是圓角,如果將按鈕拉伸很大,邊角鋸齒顯示就很明顯了,也很難看。
所以我們需要將按鈕拉伸問題進行處理:
使用uiimage物件的乙個方法resizeable...可拉伸的意思
瓦片模式:拉伸後,會將可拉伸的部分拷貝鋪設一塊一塊
拉伸模式:拉伸後,會直接將可拉伸部分直接拉大
瓦片模式,如果可拉伸部分是純單色,跟拉伸模式沒區別
// 只拉伸中間的1x1區域
最後一般專案中這個拉伸的復用的功能我們可以封裝在內部,
我們先將這個功能封裝進方法,方法名是:resizableimage
那麼寫在誰的內部比較合適,也就是誰做這個功能最合適呢?
當然是uiimage,那麼就有兩種方式,
1、分類類別拓展uiimage的方法,2、在繼承uiimage自定義類中寫
注意:類別拓展拓展成類方法比較合適哦,不然你還需要通過alloc-init建立uiimage物件,然後呼叫這個拓展的類別方法。
無**拉伸
在xcode上設定,直接好使用,不用寫**,一勞永逸。連前面匯入類別檔名都不需要了。
IOS之UI 按鈕UIButton的細節
1 內部子控制項 2 按鈕拉伸問題 2 1 拉伸 2 2 無 拉伸 如果想要改變按鈕內部子控制項的屬性,只能自定義按鈕 內邊距 設定按鈕內容的內邊距 影響到imageview和titlelabel property nonatomic uiedgeinsets contentedgeinsets 設...
iOS之UI 轉場動畫
1.什麼是轉場動畫?就是從乙個場景轉換到另乙個場景,像導航控制器的push效果,就是乙個轉場.2.如何建立轉場動畫 建立轉場動畫 catransition anim catransition animation 設定轉場型別 anim.type cube anim.duration 1 設定轉場的方...
iOS之UI控制項之TableView詳細解釋
建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...