IOS基礎-UIButton

來源:互聯網
上載者:User

IOS基礎-UIButton

思來想去,UIButton就是一個按鈕,就是平時我們用手指點擊一個控制項,然後有相應的事件產生,點擊的時候或許還會產生顏色上的變化,這個就叫做UIbutton。

它可以顯示文字,也可以顯示圖片,也可以動態調整內部的圖片和文字,而且也可以添加屬性化字串,至於屬性化字串是什麼,不懂的話沒關係,後面我會講到。

 

UIButton有三種狀態:

  1. Normal(普通狀態)

    預設情況(default)

    對應的枚舉常量:UIControlStateNormal

     

    1. Highlighted(高亮狀態)

      按鈕被按下去的時候(手指還未鬆開)

      對應的枚舉常量:UIConrolStateHighlighted

       

      1. Disabled(失效狀態,不可用狀態)

        如果enabled屬性為0, 就是處於disable狀態,代表按鈕不可以被點擊

        對應的枚舉常量:UIControlStateDisabled

         

        下面就在代碼裡面說明UIButton的屬性和方法吧

         

        - (void)viewDidLoad {    [super viewDidLoad];    /*     typedef NS_ENUM(NSInteger, UIButtonType) {     UIButtonTypeCustom = 0,                         // 自訂風格     UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),  // standard system button     UIButtonTypeDetailDisclosure,                   // 藍色小箭頭按鈕,主要做詳細說明用     UIButtonTypeInfoLight,                          // 亮色驚嘆號     UIButtonTypeInfoDark,                           // 暗色驚嘆號     UIButtonTypeContactAdd,                         // 加號按鈕     UIButtonTypeRoundedRect = UIButtonTypeSystem,   // 系統預設  圓角矩形按鈕     };     */    //建立一個類型為圓角矩形的按鈕,當然也是系統預設    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];        //frame裡麵包含控制項的座標和寬高,這裡直接設定座標(20, 20), 寬高(100, 100)    btn.frame = CGRectMake(20, 20, 100, 100);        //設定按鈕的背景顏色    btn.backgroundColor = [UIColor greenColor];        //設定按鈕的渲染顏色    btn.tintColor = [UIColor blackColor];        /*     這裡設定狀態,一般設定正常和高亮狀態,當然也有其他狀態可供選擇     UIControlStateNormal       = 0,                       // 正常狀態     UIControlStateHighlighted  = 1 << 0,                  // 高亮狀態     UIControlStateDisabled     = 1 << 1,                  // 禁用狀態     UIControlStateSelected     = 1 << 2,                  // 選中狀態     UIControlStateApplication  = 0x00FF0000,              // 當應用程式標誌時     UIControlStateReserved     = 0xFF000000               // 內部預留     */    //設定按鈕的填充圖片 正常狀態下的    [btn setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];    //設定按鈕的填充圖片 高亮狀態下 也就是被點擊時    [btn setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateHighlighted];    //設定按鈕上顯示的文字    [btn setTitle:@"" forState:UIControlStateNormal];    //設定按鈕上文字的顏色    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];    //設定按鈕上文字的陰影顏色    [btn setTitleShadowColor:[UIColor blueColor] forState:UIControlStateNormal];    //設定按鈕的背景圖片    [btn setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];    //設定按鈕的屬性字串 此處如果不懂什麼叫屬性字串 可以跳過    NSAttributedString * attrString =[[NSAttributedString alloc] initWithString:@"設定屬性字串"];    [btn setAttributedTitle:attrString forState:UIControlStateNormal];   //設定按鈕內部圖片的內間距    //top bottom 上下   left right 左右    //UIEdgeInsets inserts = UIEdgeInsetsMake(0, 0, 0, 0);    //預設情況下,當按鈕高亮的情況下,映像的顏色會變深一些,這裡設定為no,那麼會取消這個狀態    btn.adjustsImageWhenHighlighted = NO;    //預設情況下,當按鈕禁用的情況下,圖形的顏色會變深一些,這裡設定為no,那麼會取消這個狀態    btn.adjustsImageWhenDisabled = NO;    //當此處設定為YES時,按下按鈕的時候會發光    btn.showsTouchWhenHighlighted = YES;        /*     UIControlEventTouchDown        //單點觸摸按下事件:使用者點觸螢幕,或者又有新手指落下的時候     UIControlEventTouchDownRepeat  //多點觸摸按下事件,點觸計數大於1:使用者按下第二、三、或第四根手指的時候。     UIControlEventTouchDragInside  //當一次觸摸在控制項視窗內拖動時。     UIControlEventTouchDragOutside //當一次觸摸在控制項視窗之外拖動時。     UIControlEventTouchDragEnter   //當一次觸摸從控制項視窗之外拖動到內部時。     UIControlEventTouchDragExit    //當一次觸摸從控制項視窗內部拖動到外部時。     UIControlEventTouchUpInside    //所有在控制項之內觸摸抬起事件。     UIControlEventTouchUpOutside   //所有在控制項之外觸摸抬起事件(點觸必須開始與控制項內部才會發送通知)。     UIControlEventTouchCancel      //所有觸摸取消事件,即一次觸摸因為放上了太多手指而被取消,或者被上鎖或者撥打電話打斷。     UIControlEventTouchChanged     //當控制項的值發生改變時,發送通知。用於滑塊、分段控制項、以及其他取值的控制項。你可以配置滑塊控制項何時發送通知,在滑塊被放下時發送,或者在被拖動時發送。     UIControlEventEditingDidBegin  //當文本控制項中開始編輯時發送通知。     UIControlEventEditingChanged   //當文本控制項中的文本被改變時發送通知。     UIControlEventEditingDidEnd    //當文本控制項中編輯結束時發送通知。     UIControlEventEditingDidOnExit //當文本控制項內通過按下斷行符號鍵(或等價行為)結束編輯時,發送通知。     UIControlEventAlltouchEvents   //通知所有觸摸事件。     UIControlEventAllEditingEvents //通知所有關於文本編輯的事件。     UIControlEventAllEvents        //通知所有事件。     */    //給按鈕增加一個點擊事件    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];    //刪除某一種狀態下的所有事件處理    //[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];        //給按鈕增加一個長按事件    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(btnLong:)];    //設定按多長事件會觸發長按事件    longPress.minimumPressDuration = 1;    //把事件添加到按鈕上    [btn addGestureRecognizer:longPress];        //把按鈕添加到控制器的視圖上    //注意,千萬不要忘記這一步    [self.view addSubview:btn];}- (void)btnClick{    NSLog(@"%s", __func__);}- (void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer{    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan)    {        NSLog(@"長按事件");        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"訊息" message:@"確定刪除嗎?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"刪除", nil];        [alert show];    }}


         

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.