UI基礎UIButton的定義是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創新互聯公司專注網站設計,以設計驅動企業價值的持續增長,網站,看似簡單卻每一個企業都需要——設計,看似簡潔卻是每一位設計師的心血 10年來,我們只專注做網站。認真對待每一個客戶,我們不用口頭的語言來吹擂我們的優秀,超過千家的成功案例見證著我們的成長。
前面寫了UIWindow、UIViewController,那些都是一些框架,框架需要填充上具體的view才能組成我們的應用,移動應用開發中UI占了很大一部分,最基礎的UI實現是使用系統提供的各種控件,其他的就是自定義實現了,作者目前是入門狀態,只能寫寫基礎控件了。
iOS中提供了UIButton、UILable、UITextField、UIImageView等基礎UI控件,繼承于UIView。這里先拿UIButton練練手,為什么拿UIButton呢,因為UIbutton繼承自UIControl,UIControl派生自UIView類,每個控件都有很多視圖的特性,包括附著于其他視圖的能力,所有控件都擁有一套共同的屬性和方法,包含顯示內容,點擊事件等等,UIControl的子類都有事件處理能力。
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;
//設置對應狀態的標題內容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 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使用如下方法添加事件。
[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 };
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。
網頁名稱:UI基礎UIButton的定義是什么
鏈接URL:http://m.newbst.com/article0/jeegoo.html
成都網站建設公司_創新互聯,為您提供、營銷型網站建設、面包屑導航、網站建設、定制網站、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯