国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS中UIButton控件的用法及部分參數解釋

2019-11-14 18:26:24
字體:
來源:轉載
供稿:網友

 

在UI控件中UIButton是極其常用的一類控件,它的類對象創建與大多數UI控件使用實例方法init創建不同,通常使用類方法創建:

+ (id)buttonWithType:(UIButtonType)buttonType;

如果使用實例方法創建UIButton對象,如:

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 300, 100, 50)];

對象的創建是沒有任何問題的,但是當為這個button對象設置一個標題時,如:

    [button setTitle:@"asd" forState:UIControlStateNormal];

但程序運行之后屏幕上是沒有任何顯示的,但這并不是程序有bug,只是當button使用實例方法創建時,標題文字的默認顏色是白色,在白色屏幕或無設置背景色的屏幕上自然是看不見的。而如果使用類方法創建UIButton對象,則需要輸入一個UIButtonType類型的參數,這是一個枚舉,具體如下:

typedef NS_ENUM(NSInteger, UIButtonType) {

    UIButtonTypeCustom = 0,                         // 自定義類型,即無類型,當選擇這個參數市與使用類方法效果相同

    UIButtonTypeSystem,                               // 標準類型,一般情況下地選擇,在iOS7.0版本開始使用

    UIButtonTypeDetailDisclosure,                  //與標準類型相比多了一個藍色的information標志

    UIButtonTypeInfoLight,                            //information的標志亮一點

    UIButtonTypeInfoDark,                             //information的標志暗一點

    UIButtonTypeContactAdd,                         //與標準類型相比多了一個加號標志

    UIButtonTypeRoundedRect = UIButtonTypeSystem,   // 不贊成使用,已被標準類型代替

};

除了UIButtonTypeCustom以外其他枚舉類型的默認顏色都是藍色,幾時在button上放置圖片,最初的現實效果也是藍色。

而自定義類型則可正確顯示圖片本來的顏色。此外,若同時為button設置圖片和文字,則圖片在左文字在右。

設置標題文字:- (void)setTitle:(NSString *)title forState:(UIControlState)state;

設置圖片:- (void)setImage:(UIImage *)image forState:(UIControlState)state;

作用是在狀態state下顯示字符串對象title,圖片image,其中如果要在不同狀態顯示不同圖片則需要圖片相同大小,否則會錯誤顯示。

其中UIControlState是枚舉類型,具體如下:

typedef NS_OPTIONS(NSUInteger, UIControlState) {

    UIControlStateNormal       = 0,                          //正常狀態

    UIControlStateHighlighted  = 1 << 0,                  // 高亮狀態,當button被點擊時會從正常狀態轉變為高亮狀態,松開時自動轉化為正常轉態

    UIControlStateDisabled     = 1 << 1,                   //不可用狀態,通過屬性enabled設置

    UIControlStateSelected     = 1 << 2,                  // 選中轉態,通過屬性selected設置

    UIControlStateapplication  = 0x00FF0000,              // 當應用程序標志時

    UIControlStateReserved     = 0xFF000000               //為內部框架預留

};

 常見的用法是:

[button setTitle:title1 forState:UIControlStateNormal];

[button setTitle:title2 forState:UIControlStateHighlighted];

這樣button的正常狀態顯示title1,按下時顯示title2,松開時顯示title1.

設置圖片同理。

設置背景圖片:- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

與設置圖片不同,背景圖片顯示在文字下方,而不是左邊。

 

設置標題文字顏色:- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

此方法只改變標題文字顏色,不影響圖片顏色,而屬性tintColor則同時影響標題文字和圖片的顏色,但不影響背景圖像顏色。另外,當UIButton創建時選擇UIButtonTypeCustom或使用實例方法創建時屬性tintColor無效。

 

 設置響應事件:- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

意思是當controlEvents發生時target調用action方法,用OC的說法就是發送action消息給target對象。

其中controlEvents是枚舉類型,具體如下:

typedef NS_OPTIONS(NSUInteger, UIControlEvents) {

    UIControlEventTouchDown           = 1 <<  0,      // 按鈕按下事件

    UIControlEventTouchDownRepeat     = 1 <<  1,      // 雙擊或多次點擊事件

    UIControlEventTouchDragInside     = 1 <<  2,        //控件窗口內部拖動事件

    UIControlEventTouchDragOutside    = 1 <<  3,      //控件窗口外部拖動事件

    UIControlEventTouchDragEnter      = 1 <<  4,       //從控件窗口外部拖動進入內部事件

    UIControlEventTouchDragExit       = 1 <<  5,        //控件窗口外部拖動進入內部事件

    UIControlEventTouchUpInside       = 1 <<  6,       //控件窗口內部點擊抬起事件,發生在UIControlEventTouchDown事件之后

    UIControlEventTouchUpOutside      = 1 <<  7,     //控件窗口內部點擊窗口外部抬起事件

    UIControlEventTouchCancel         = 1 <<  8,       //所有點擊取消事件,如:太多手指,上鎖,或有電話進入

 

    UIControlEventValueChanged        = 1 << 12,     // 控件值改變事件,多用于UISlider,UISegmentControl,UipageControl

 

    UIControlEventEditingDidBegin     = 1 << 16,     // UITextField開始編輯事件,即進入第一響應時

    UIControlEventEditingChanged      = 1 << 17,    //UITextField中的文字改變時

    UIControlEventEditingDidEnd       = 1 << 18,     //UITextField結束編輯時,即取消第一響應時

    UIControlEventEditingDidEndOnExit = 1 << 19,     // 點擊'return key'時,默認是換行鍵,會自動取消第一響應結束編輯

 

    UIControlEventAllTouchEvents      = 0x00000FFF,  // 所有觸摸事件

    UIControlEventAllEditingEvents    = 0x000F0000,  // 所有 UITextField編輯事件

    UIControlEventApplicationReserved = 0x0F000000,  // range available for application use

    UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use

    UIControlEventAllEvents           = 0xFFFFFFFF        //所有事件

};

 

取消響應事件:- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

作用是取消當controlEvents發生時target對action的響應,即當事件發生時target不再觸發方法action,當然前提是之前已經添加了對這個事件的方法響應,其中參數均可設置為nil,表示任意、所有,即移除全部。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天水市| 凤台县| 安平县| 巴林右旗| 田阳县| 江阴市| 房产| 十堰市| 玉门市| 玉山县| 桦南县| 新乡市| 株洲市| 铜梁县| 行唐县| 高平市| 准格尔旗| 静海县| 大宁县| 乐亭县| 鹿邑县| 台北县| 江山市| 芷江| 阳谷县| 新平| 永定县| 曲麻莱县| 湖州市| 沁阳市| 新丰县| 册亨县| 旅游| 湄潭县| 德格县| 通城县| 长泰县| 江川县| 保德县| 枞阳县| 洛阳市|