天天看點

IOS UIButton使用詳解

第一、uibutton的定義

    uibutton *button=[[uibutton buttonwithtype:(uibuttontype);

能夠定義的button類型有以下6種,

 typedef enum {

 uibuttontypecustom = 0, 自定義風格

 uibuttontyperoundedrect, 圓角矩形 

 uibuttontypedetaildisclosure, 藍色小箭頭按鈕,主要做詳細說明用

 uibuttontypeinfolight, 亮色感歎号

 uibuttontypeinfodark, 暗色感歎号

uibuttontypecontactadd, 十字加号按鈕

 } uibuttontype;

第二、設定frame

button1.frame = cgrectmake(20, 20, 280, 40);

[button setframe:cgrectmake(20,20,50,50)];

第三、button背景色

button1.backgroundcolor = [uicolor clearcolor];

[button setbackgroundcolor:[uicolor bluecolor]];

第四、state狀态

 forstate: 這個參數的作用是定義按鈕的文字或圖檔在何種狀态下才會顯現

enum {

uicontrolstatenormal = 0, 正常狀态顯現 

 uicontrolstatehighlighted = 1 << 0, 高亮狀态顯現 

 uicontrolstatedisabled = 1 << 1, 禁用的狀态才會顯現

 uicontrolstateselected = 1 << 2, 選中狀态 

 uicontrolstateapplication = 0x00ff0000, 當應用程式标志時 

 uicontrolstatereserved = 0xff000000 為内部架構預留,可以不管他 

};

@property(nonatomic,getter=isenabled)bool enabled; 

                               // default is yes. if no, ignores touch events and subclasses may draw differently

@property(nonatomic,getter=isselected)bool selected; 

                             // default is no may be used by some subclasses or by application

@property(nonatomic,getter=ishighlighted)bool highlighted;

第五 、設定button填充圖檔和背景圖檔

    [buttonsetimage:[uiimageimagenamed:@"checkmarkcontrollericon"]forstate:uicontrolstatenormal];

    [buttonsetbackgroundimage:[uiimageimagenamed:@"checkmarkcontrollericon"]forstate:uicontrolstatenormal];

第六、設定button标題和标題顔色

[button1 settitle:@"點選" forstate:uicontrolstatenormal];

  [buttonsettitlecolor:[uicolorredcolor]forstate:uicontrolstatenormal];

第七、設定按鈕按下會發光

    button.showstouchwhenhighlighted=no;

第八、添加或删除事件處理

[button1 addtarget:self action:@selector(butclick:) forcontrolevents:uicontroleventtouchupinside];

[btn removetarget:nil action:nil forcontrolevents:uicontroleventtouchupinside];

第九、 設定按鈕内部圖檔間距和标題間距

 uiedgeinsets insets; // 設定按鈕内部圖檔間距

 insets.top = insets.bottom = insets.right = insets.left = 10;

 bt.contentedgeinsets = insets;

 bt.titleedgeinsets = insets; // 标題間距

繼續閱讀