前面寫了UIWindow、UIViewController,那些都是一些框架,框架需要填充上具體的view才能組成我們的應用,移動應用開發中UI占了很大一部分,最基礎的UI實現是使用系統提供的各種控件,其他的就是自定義實現了,作者目前是入門狀態,只能寫寫基礎控件了。
iOS中提供了UIButton、UILable、UITextField、UIImageView等基礎UI控件,繼承于UIView。這里先拿UIButton練練手,為什么拿UIButton呢,因為UIbutton繼承自UIControl,UIControl派生自UIView類,每個控件都有很多視圖的特性,包括附著于其他視圖的能力,所有控件都擁有一套共同的屬性和方法,包含顯示內容,點擊事件等等,UIControl的子類都有事件處理能力。
圖、UIControl

**UIButton的定義:**
UIButton可使用?initWithFrame、buttonWithType兩種方式創建:
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)buttonWithType
~~~
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方法:
~~~
-(void)btn2Pressed{
NSLog(@"button pressed");
}
~~~
UIButtonType:
~~~
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
-(void)setTitle:(NSString *)title forState:(UIControlState)state; ?
//設置對應狀態的標題顏色?? ? ? ? ??
-(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 enum {
UIButtonTypeCustom = 0, // no button type 自定義,無風格
UIButtonTypeRoundedRect, // rounded rect, flat white button, like in address card 白色圓角矩形,類似偏好設置表格單元或者地址簿卡片
UIButtonTypeDetailDisclosure,//藍色的披露按鈕,可放在任何文字旁
UIButtonTypeInfoLight,//微件(widget)使用的小圓圈信息按鈕,可以放在任何文字旁
UIButtonTypeInfoDark,//白色背景下使用的深色圓圈信息按鈕
UIButtonTypeContactAdd,//藍色加號(+)按鈕,可以放在任何文字旁
} UIButtonType;
~~~
更多屬性可參考官方文檔。
**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
};
~~~
- 前言
- (一)——ios搭建開發環境
- (二)——Hello iOS
- (三)——iOS系統架構
- (四)——iOS應用程序生命周期
- (五)——UI基礎UIWindow、UIView
- (六)——ViewController
- (七)——UI基礎UIButton
- (八)——iOS網絡通信http之NSURLConnection
- (九)—— xml數據解析
- (十)——iOS真機調試
- (十一)——JSON數據解析
- (十二)——iOS國際化
- (十三)——獲取手機信息(UIDevice、NSBundle、NSLocale)
- (十四)——打電話、發短信
- (十五)——數據庫操作(SQLite)
- (十六)——數據庫操作(使用FMDB)
- (十七)——文件操作(NSFileManager)
- Swift初學習