iOS UIButton 全面解析

weixin_33935777發表於2017-12-14

字數1443 閱讀548 評論5 喜歡36 UIButton 的全面解析 建議收藏,用到的時候來這裡一查就都明白了

初始化Button 不用alloca init 的方法 用便利構造器初始化 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, -自定義風格 UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), UIButtonTypeDetailDisclosure, -藍色小箭頭按鈕,主要做詳細說明 UIButtonTypeInfoLight, -亮色感嘆號 UIButtonTypeInfoDark, -暗色感嘆號 UIButtonTypeContactAdd, -十字加號按鈕 UIButtonTypeRoundedRect = UIButtonTypeSystem, -圓角矩形 }; //設定button frmae button.frame = CGRectMake(100, 100, 100, 100); //設定button 背景顏色 button.backgroundColor = [UIColor orangeColor]; //新增button的標題 [button setTitle:@"登陸" forState:UIControlStateNormal]; //設定標題的顏色 [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; //設定標題字型的大小 button.titleLabel.font = [UIFont systemFontOfSize:20]; //設定button的背景圖片 [button setBackgroundImage:[UIImage imageNamed:@"11.png"] forState:UIControlStateNormal]; //獲取指定狀態下的背景圖片 UIImage *tempImage = [button imageForState:UIControlStateNormal]; //設定前景圖片 前景圖片必須是鏤空圖,或者是線條勾勒的圖片 [button setImage:[UIImage imageNamed:@"7.png"] forState:UIControlStateNormal]; //設定陰影顏色 [button setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

//button 一些其他屬性 @property(nonatomic) UIEdgeInsets contentEdgeInsets; 內容內距離 @property(nonatomic) UIEdgeInsets titleEdgeInsets; 標題內距離 @property(nonatomic) BOOL reversesTitleShadowWhenHighlighted; 標題的陰影改變時,按鈕是否高亮顯示。預設為NO @property(nonatomic) UIEdgeInsets imageEdgeInsets; 圖片內邊距 @property(nonatomic) BOOL adjustsImageWhenHighlighted;按鈕高亮的情況下,影象的顏色是否要加深一點。預設是YES @property(nonatomic) BOOL adjustsImageWhenDisabled; 按鈕禁用的情況下,影象的顏色是否要加深一點。預設是YES @property(nonatomic) BOOL showsTouchWhenHighlighted; 按下按鈕是否會發光 預設是NO @property(nonatomic,readonly) UIButtonType buttonType; button的型別

設定button某個狀態的標題

  • (void)setTitle:(nullable NSString *)title forState:(UIControlState)state; 例: [button setTitle:@"開燈" forState:UIControlStateNormal];

設定button某個狀態的標題顏色

  • (void)setTitleColor:(nullable UIColor *)color forState:(UIControlState)state 例:[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

設定button某個狀態陰影的標題顏色

  • (void)setTitleShadowColor:(nullable UIColor *)color forState:(UIControlState)state 例:[button setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

設定button某個狀態圖片

  • (void)setImage:(nullable UIImage *)image forState:(UIControlState)state;

設定button 某個狀態背景圖片

  • (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR; // default is nil

設定button 某個狀態下的富文字標題

  • (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state NS_AVAILABLE_IOS(6_0); // default is nil. title is assumed to be single line

返回button 某個狀態下的標題

  • (nullable NSString *)titleForState:(UIControlState)state;

返回button 某個狀態下的標題顏色

  • (nullable UIColor *)titleColorForState:(UIControlState)state;

返回button 某個狀態下的陰影標題顏色

  • (nullable UIColor *)titleShadowColorForState:(UIControlState)state;

返回button 某個狀態下的圖片

  • (nullable UIImage *)imageForState:(UIControlState)state;

返回button 某個狀態下的背景圖片

  • (nullable UIImage *)backgroundImageForState:(UIControlState)state;

返回button 某個狀態下的富文字標題

  • (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);

/* forState: 這個引數的作用是定義按鈕的文字或圖片在何種狀態下才會顯現*/ 以下是幾種狀態 enum { UIControlStateNormal = 0, 常規狀態顯現 UIControlStateHighlighted = 1 << 0, 高亮狀態顯現 UIControlStateDisabled = 1 << 1, 禁用的狀態才會顯現 UIControlStateSelected = 1 << 2, 選中狀態 UIControlStateApplication = 0x00FF0000, 當應用程式標誌時 UIControlStateReserved = 0xFF000000 為內部框架預留,可以不管他 };

獲取按鈕當前標題 @property(nullable, nonatomic,readonly,strong) NSString *currentTitle;

獲取按鈕當前標題顏色 @property(nonatomic,readonly,strong) UIColor *currentTitleColor;

獲取按鈕當前陰影標題顏色 @property(nullable, nonatomic,readonly,strong) UIColor *currentTitleShadowColor;

獲取按鈕當前按鈕內影象 @property(nullable, nonatomic,readonly,strong) UIImage *currentImage;

獲取按鈕當前標題背景圖片 @property(nullable, nonatomic,readonly,strong) UIImage *currentBackgroundImage;

獲取按鈕當前標題富文字 @property(nullable, nonatomic,readonly,strong) NSAttributedString *currentAttributedTitle

@property(nullable, nonatomic,readonly,strong) UILabel *titleLabel NS_AVAILABLE_IOS(3_0); @property(nullable, nonatomic,readonly,strong) UIImageView *imageView NS_AVAILABLE_IOS(3_0);

指定背景邊界

  • (CGRect)backgroundRectForBounds:(CGRect)bounds; 指定內容邊界
  • (CGRect)contentRectForBounds:(CGRect)bounds; 指定標題邊界
  • (CGRect)titleRectForContentRect:(CGRect)contentRect; 指定圖片邊界
  • (CGRect)imageRectForContentRect:(CGRect)contentRect;

示例:

  • (CGRect)imageRectForContentRect:(CGRect)bounds{ return CGRectMake(0.0, 0.0, 44, 44); } @end

//給按鈕新增點選事件 [button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

列舉值:

UIControlEventTouchDown             // 單點觸控按下事件:使用者點觸螢幕,或者又有新手指落下的時候。
UIControlEventTouchDownRepeat       // 多點觸控按下事件,點觸計數大於1:使用者按下第二、三、或第四根手指的時候。
UIControlEventTouchDragInside       // 當一次觸控在控制元件視窗內拖動時。
UIControlEventTouchDragOutside      // 當一次觸控在控制元件視窗之外拖動時。
UIControlEventTouchDragEnter        // 當一次觸控從控制元件視窗之外拖動到內部時
UIControlEventTouchDragExit         // 當一次觸控從控制元件視窗內部拖動到外部時。
UIControlEventTouchUpInside         // 所有在控制元件之內觸控抬起事件
UIControlEventTouchUpOutside        // 所有在控制元件之外觸控抬起事件(點觸必須開始與控制元件內部才會傳送通知)。
UIControlEventTouchCancel           // 所有觸控取消事件,即一次觸控因為放上了太多手指而被取消,或者被上鎖或者電話呼叫打斷。

UIControlEventValueChanged          // 當控制元件的值發生改變時,傳送通知。用於滑塊、分段控制元件、以及其他取值的控制元件。你可以配置滑塊控制元件何時傳送通知,在滑塊被放下時傳送,或者在被拖動時傳送。

UIControlEventEditingDidBegin       // 當文字控制元件中開始編輯時傳送通知
UIControlEventEditingChanged        // 當文字控制元件中的文字被改變時傳送通知。
UIControlEventEditingDidEnd         // 當文字控制元件中編輯結束時傳送通知。
UIControlEventEditingDidEndOnExit   // 當文字控制元件內通過按下Enter鍵(或等價行為)結束編輯時,傳送通知。

UIControlEventAllTouchEvents        // 通知所有觸控事件。
UIControlEventAllEditingEvents      // 通知所有關於文字編輯的事件。
UIControlEventApplicationReserved   // range available for application use
UIControlEventSystemReserved        // range reserved for internal framework use

UIControlEventAllEvents             // 通知所有事件
複製程式碼

相關文章