1,UIButton初始化
(1)initWithFrame
UIButton *btn = [ [UIButton alloc] initWithFrame:CGRectMake(10, 20, 30, 10)];
(2)initWithType
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
能定義的button類型:
typedef enum {
UIButtonTypeCustom = 0, 自定義風格 最常用
UIButtonTypeRoundedRect, 圓角矩形
UIButtonTypeDetailDisclosure, 藍色小箭頭按鈕,主要做詳細說明用
UIButtonTypeInfoLight, 亮色感嘆號
UIButtonTypeInfoDark, 暗色感嘆號
UIButtonTypeContactAdd, 十字加號按鈕
} UIButtonType;
2,UIButton常用方法
//設置button在view上的位置
btn.frame = CGRectMake(20, 30, 300, 30);
//設置button背景色
btn.backgroundColor = [UIColor redColor];
//設置button填充圖片
[btn setImage: [UIImage imageNamed : @“Com.png”] forState: UIControlStateNormal];
//設置button標題
[btn setTitle: @“Title” forState: UIControlStateNormal]; //按鈕默認的文本
[btn1 setTitle:@"我被點了!" forState:UIControlStateHighlighted]; //點擊時的文本
//添加按鈕事件
[btn addTarget: self action: @selector(btnClick) forControlEvents: UIControlEventTouchUpInside]; //事件方法名字是btnClick
//點擊時按鈕發光,就是在按鈕中間發亮光
btn1.showsTouchWhenHighlighted=YES;
3, forState
作用: 定義按鈕的文字或圖片在何種狀態下才會顯現
enum {
UIControlStateNormal = 0, 常規狀態顯現
UIControlStateHighlighted = 1 << 0, 高亮狀態顯現
UIControlStateDisabled = 1 << 1, 禁用的狀態纔會顯現
UIControlStateSelected = 1 << 2, 選中狀態
UIControlStateApplication = 0x00FF0000, 當應用程序標誌時
UIControlStateReserved = 0xFF000000 爲內部框架預留,可以不管他
};
4,forControlEvents
作用: 設置觸發方式
typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
UIControlEventTouchDown = 1 << 0, // 指鼠標左鍵按下(注:只是“按下”)的動作
UIControlEventTouchDownRepeat = 1 << 1, // 指鼠標左鍵連續多次重複按下(注:只是“按下”) 的動作,比如,鼠標連續雙擊、三擊、……、多次連擊。
說明:多次重複按下時,事件序列是這樣的:
UIControlEventTouchDown ->
UIControlEventTouchUpInside ->
UIControlEventTouchDown ->
UIControlEventTouchDownRepeat ->
UIControlEventTouchUpInside ->
UIControlEventTouchDown ->
UIControlEventTouchDownRepeat ->
UIControlEventTouchUpInside ->
......
除了第一次按下外,後面每次摁下都是一個 UIControlEventTouchDown事件,然後緊跟一個 UIControlEventTouchDownRepeat事件。
UIControlEventTouchDragInside = 1 << 2, // 指按下鼠標,然後在控件邊界範圍內拖動。
UIControlEventTouchDragOutside = 1 << 3, // 與UIControlEventTouchDragInside不同的是,拖動 時,鼠標位於控件邊界範圍之外。但首先得有個 UIControlEventTouchDown事件,然後接一個 UIControlEventTouchDragInside事件,再接一個 UIControlEventTouchDragExit事件,這時,鼠標已 經位於控件外了,繼續拖動就是 UIControlEventTouchDragOutside事件了。
UIControlEventTouchDragEnter = 1 << 4, // 指拖動動作中,從控件邊界外到內時產生的事件。
UIControlEventTouchDragExit = 1 << 5, //指拖動動作中,從控件邊界內到外時產生的事件。
UIControlEventTouchUpInside = 1 << 6, //指鼠標在控件範圍內擡起,前提先得按下,即 UIControlEventTouchDown或 UIControlEventTouchDownRepeat事件。
UIControlEventTouchUpOutside = 1 << 7, //指鼠標在控件邊界範圍外擡起,前提先得按下,然後拖 動到控件外,即
UIControlEventTouchDown ->
UIControlEventTouchDragInside(n 個) ->
UIControlEventTouchDragExit ->
UIControlEventTouchDragOutside(n 個)
時間序列,再然後就是擡起鼠標,產生 UIControlEventTouchUpOutside事件。
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
};