UIButton詳解及示例

  • UIButton是iOS UI中最簡單的一個控件了。
  • 這里給出5類示例。如下圖。

1.button 類型
2.button 屬性及方法(詳見代碼)
3.xib 實現圖片、標題一體
4.純代碼實現圖片、標題一體
5.button 按標題長度設置大小且可選返回示例


  • 1、能夠定義的button類型有以下6種,但是現在已經沒有這么多形態(tài)了,因為蘋果UI全部換成扁平化,現在只剩下四種形態(tài):系統(tǒng)的,自定義的,加號,嘆號,最后那種圓角可以畫的。
 typedef enum {
 UIButtonTypeCustom = 0,  //自定義風格
 UIButtonTypeRoundedRect, //圓角矩形 
 UIButtonTypeDetailDisclosure, //藍色小箭頭按鈕,主要做詳細說明用
 UIButtonTypeInfoLight,// 亮色感嘆號
 UIButtonTypeInfoDark, //暗色感嘆號
 UIButtonTypeContactAdd,// 十字加號按鈕
 } UIButtonType;
  • 2、button屬性及方法(詳見代碼)
//btn 類型
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    //btn frame
    btn.frame = CGRectMake(0, 0, 100, 50);
    btn.center = self.view.center;
    //背景色
    btn.backgroundColor = [UIColor cyanColor];
    //設置button 的填充圖片
    [btn setImage:[UIImage imageNamed:@"share_qq"] forState:UIControlStateNormal];
    //選中狀態(tài)下的圖片
    [btn setImage:[UIImage imageNamed:@"share_pengyouquan"] forState:UIControlStateSelected];
    //背靜圖片
    [btn setBackgroundImage:[UIImage imageNamed:@"share_weixin"] forState:UIControlStateNormal];
    //設置tag值
    btn.tag = 12345;
    //添加事件
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    //加載到view上
    [self.view addSubview:btn];
//取消按鈕已經添加的所有事件:(這個比較重要,若添加了兩個事件  兩個事件都會被觸發(fā))
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
  • 3、xib 實現圖片、標題一體

一個button 有圖片有標題的時候我們應該怎么來合理的安排它們在button 中的位置呢?
3.1 在UIButton中有三個對EdgeInsets的設置:ContentEdgeInsets、titleEdgeInsets、imageEdgeInsets

UIEdgeInsetsMake
里面的四個參數表示距離上邊界、左邊界、下邊界、右邊界的距離,默認都為零,title/imagebutton的正中央

UIKIT_STATIC_INLINE UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) {
    UIEdgeInsets insets = {top, left, bottom, right};
    return insets;
}
設置imageEdgeInsets 是圖片相對于button的位置
設置titleEdgeInsets是標題相對于button的位置
設置ContentEdgeInsets是圖片和標題一起變化

方法

如果是xib設置的話,看到一個button控件上放了一張?zhí)畛鋱D片和一個標題,然后右側的工具欄看到 Edge這一欄,可選的有Image,Title,Content,下面有Inset欄我們一般選擇Title和Image調整即可。如圖可以隨便得到你想要的效果。


4.純代碼實現圖片、標題一體
示例代碼:

- (void)setUI {
//第一種
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(0, 0, 48, 70);
    btn.center = CGPointMake(self.view.frame.size.width/2, 200);
    btn.backgroundColor = [UIColor orangeColor];
    //1.給 btn 添加圖片
    [btn setImage:[UIImage imageNamed:@"share_mesage"] forState:UIControlStateNormal];
    //2.設置image 在 btn 上的位置(上,左,下,右)
    btn.imageEdgeInsets = UIEdgeInsetsMake(-15, 0, 0, 0);
    //3.添加標題
    [btn setTitle:@"短信" forState:UIControlStateNormal];
    btn.titleLabel.font = [UIFont systemFontOfSize:12];
    [btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
    //4.設置 title 在 btn 上的位置
    btn.titleEdgeInsets = UIEdgeInsetsMake(60, -48, 5, 0);
    btn.tag = 10001;
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
//第二種
    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn1.frame = CGRectMake(0, 0, 48, 70);
    btn1.center = CGPointMake(self.view.frame.size.width/2, 300);
    btn1.backgroundColor = [UIColor orangeColor];
    //1.給 btn 添加圖片
    [btn1 setImage:[UIImage imageNamed:@"share_mesage"] forState:UIControlStateNormal];
    //2.設置image 在 btn 上的位置(上,左,下,右)
    btn1.imageEdgeInsets = UIEdgeInsetsMake(20, 0, 0, 0);
    //3.添加標題
    [btn1 setTitle:@"短信" forState:UIControlStateNormal];
    btn1.titleLabel.font = [UIFont systemFontOfSize:12];
    [btn1 setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [btn1 setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
    //4.設置 title 在 btn 上的位置
    btn1.titleEdgeInsets = UIEdgeInsetsMake(-50, -48, 0, 0);
    btn1.tag = 10002;
    [btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    [self.view addSubview:btn1];
}

效果圖:


5.button 按標題長度設置大小且可選返回示例

1.按button標題的長度計算button的frame
2.可以選擇或取消選擇
3.完成后可以用block把選擇的按鈕值傳回上一級菜單

最后本文的代碼地址請見github
? UIButton詳解及示例
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容