iOS學習——UI基礎UIButton(七)

       前面寫了UIWindow、UIViewController,那些都是一些框架,框架須要填充上具體的view才能組成咱們的應用,移動應用開發中UI佔了很大一部分,最基礎的UI實現是使用系統提供的各類控件,其餘的就是自定義實現了,做者目前是入門狀態,只能寫寫基礎控件了。html

      iOS中提供了UIButton、UILable、UITextField、UIImageView等基礎UI控件,繼承於UIView。這裏先拿UIButton練練手,爲何拿UIButton呢,由於UIbutton繼承自UIControl,UIControl派生自UIView類,每一個控件都有不少視圖的特性,包括附着於其餘視圖的能力,全部控件都擁有一套共同的屬性和方法,包含顯示內容,點擊事件等等,UIControl的子類都有事件處理能力。android

圖、UIControlios


UIButton的定義:

     UIButton可以使用 initWithFrame、buttonWithType兩種方式建立:app

1)initWithFrame框架

 

  UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(60, 60, 200, 60)];
    btn.backgroundColor=[UIColor greenColor];
    [btn setTitle:@"btn1" forState:UIControlStateNormal];
    [self.view addSubview:btn];

 

 

2)buttonWithTypeide

 

UIButton *btn2=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    CGRect rect=CGRectMake(60, 160, 200, 60);
    btn2.frame=rect;
    btn2.tag=1001;
    btn2.backgroundColor=[UIColor colorWithRed:30/255.0 green:200/255.0 blue:125/255.0 alpha:1.0];
    [btn2 setTitle:@"btn2" forState:UIControlStateNormal];

    [btn2 addTarget:self action:@selector(btn2Pressed) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:btn2];

btn2Pressed方法:ui

 

 

-(void)btn2Pressed{

    NSLog(@"button pressed");
}

 

UIButtonType:spa

typedef enum {
    UIButtonTypeCustom = 0,           // no button type   自定義,無風格
    UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card 白色圓角矩形,相似偏好設置表格單元或者地址簿卡片
    UIButtonTypeDetailDisclosure,//藍色的披露按鈕,可放在任何文字旁
    UIButtonTypeInfoLight,//微件(widget)使用的小圓圈信息按鈕,能夠放在任何文字旁
    UIButtonTypeInfoDark,//白色背景下使用的深色圓圈信息按鈕
    UIButtonTypeContactAdd,//藍色加號(+)按鈕,能夠放在任何文字旁
} UIButtonType;

UIButton經常使用屬性:

//設置對應狀態的標題內容default is nil. title is assumed to be single line.net

- (void)setTitle:(NSString *)title forState:(UIControlState)state;  code

//設置對應狀態的標題顏色           

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;   

//設置對應狀態的標題陰影顏色            

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state;          

//設置對應狀態的按鈕的圖片

- (void)setImage:(UIImage *)image forState:(UIControlState)state;        

//設置對應狀態的按鈕背景圖片

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;    

 

UIButton的UIControlState   :     

 

typedef NS_OPTIONS(NSUInteger, UIControlState) {
    UIControlStateNormal       = 0,
    UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set
    UIControlStateDisabled     = 1 << 1,
    UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)
    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use
    UIControlStateReserved     = 0xFF000000               // flags reserved for internal framework use
};


 

 

更多屬性可參考官方文檔。

UIButton添加事件:

UIButton使用以下方法添加事件。

 

[btn addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>]


這些事件都是基於觸摸、基於值、基於編輯。可相應以下事件。

 

 

typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
    UIControlEventTouchDown           = 1 <<  0,      // on all touch downs
    UIControlEventTouchDownRepeat     = 1 <<  1,      // on multiple touchdowns (tap count > 1)
    UIControlEventTouchDragInside     = 1 <<  2,
    UIControlEventTouchDragOutside    = 1 <<  3,
    UIControlEventTouchDragEnter      = 1 <<  4,
    UIControlEventTouchDragExit       = 1 <<  5,
    UIControlEventTouchUpInside       = 1 <<  6,
    UIControlEventTouchUpOutside      = 1 <<  7,
    UIControlEventTouchCancel         = 1 <<  8,

    UIControlEventValueChanged        = 1 << 12,     // sliders, etc.

    UIControlEventEditingDidBegin     = 1 << 16,     // UITextField
    UIControlEventEditingChanged      = 1 << 17,
    UIControlEventEditingDidEnd       = 1 << 18,
    UIControlEventEditingDidEndOnExit = 1 << 19,     // 'return key' ending editing

    UIControlEventAllTouchEvents      = 0x00000FFF,  // for touch events
    UIControlEventAllEditingEvents    = 0x000F0000,  // for UITextField
    UIControlEventApplicationReserved = 0x0F000000,  // range available for application use
    UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use
    UIControlEventAllEvents           = 0xFFFFFFFF
};


 

 

 

/**
* @author 張興業
*  iOS入門羣:83702688
*  android開發進階羣:241395671
*  個人新浪微博:@張興業TBOW
*/

 

 

參考:

 

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html


http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/Introduction/Introduction.html#//apple_ref/doc/uid/TP40006955-CH1-SW1

 

 

1、UIKit結構圖

相關文章
相關標籤/搜索