你好,歡迎來到IOS教程網

 Ios教程網 >> IOS基礎知識 >> IOS基礎知識 >> IOS基礎-UIButton

IOS基礎-UIButton

編輯:IOS基礎知識

思來想去,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];
            }
        }
        


         

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