你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> iOS中UIButton控件的用法及部分參數解釋

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

編輯:IOS技巧綜合
[摘要]本文是對iOS中UIButton控件的用法及部分參數解釋的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

在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,表示任意、所有,即移除全部。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved