UIButton詳解

    // 初始化按鈕樣式
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    /*
     UIButtonTypeCustom             自定義 (默認 無樣式)
     UIButtonTypeRoundedRect        白色圓角矩形
     UIButtonTypeDetailDisclosure   藍色小箭頭按鈕,主要做詳細說明用
     UIButtonTypeInfoLight          亮色圓圈感嘆號信息按鈕
     UIButtonTypeInfoDark           深色圓圈感嘆號信息按鈕
     UIButtonTypeContactAdd         藍色加號(+)按鈕
     */

    // 設置位置和大小
    button.frame = CGRectMake(20, 100, 250, 50);

    // 設置裁剪半徑
    button.layer.cornerRadius = 20;
    // 設置裁剪後邊框顏色
    button.layer.borderColor = [UIColor redColor].CGColor;
    // 設置裁剪後邊框寬度
    button.layer.borderWidth = 1;
    // 設置隱藏裁剪區域
    button.layer.masksToBounds = YES;

    // 設置標籤 用來辨別點擊的是哪個button
    button.tag = 1000;

    // 設置背景顏色
    button.backgroundColor = [UIColor brownColor];

    // 設置不同狀態時的標題文字及顏色
    [button setTitle:@"Normal Title" forState:UIControlStateNormal];
    [button setTitle:@"Hlight Title" forState:UIControlStateHighlighted];
    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];

    // 設置不同狀態時的富文本標題 標題其他設置無效
    //NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Attributed Title" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor purpleColor]}];
    //[button setAttributedTitle:attributedString forState:UIControlStateNormal];

    // 設置不同狀態時的標題圖片
    // 原比例的顯示 當寬高不足時圖片不足的一邊被壓縮
    // 當設置了標題且按鈕寬度不夠時優先顯示圖片 圖片原大小顯示,當寬高不足時
    [button setImage:[UIImage imageNamed:@"4"] forState:UIControlStateNormal];

    // 設置不同狀態時的背景圖片
    // 圖片自動拉伸來適應button的大小 背景顏色被覆蓋
    [button setBackgroundImage:[UIImage imageNamed:@"pink"] forState:UIControlStateNormal];

    // 設置不同狀態時的標題陰影顏色.不同狀態默認的標題陰影顏色是UIControlStateNormal時的值.若normal狀態的值沒有設定,默認是個系統值,所以你只要要設置normal狀態
    [button setTitleShadowColor:[UIColor blueColor] forState:UIControlStateNormal];

    /*
     UIControlStateNormal       常規狀態
     UIControlStateHighlighted  高亮狀態
     UIControlStateDisabled     禁用狀態
     UIControlStateSelected     選中狀態
     UIControlStateFocused      當屏幕支持聚焦時可用  iOS 9 新屬性
     UIControlStateApplication  當應用程序標誌使用時
     UIControlStateReserved     爲內部框架預留的
     */


    // 設置標題圖片和文字偏移量 (默認UIEdgeInsetsZero)
    // UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)
    //button.contentEdgeInsets = UIEdgeInsetsMake(100, 0, 0, 0);

    // 設置標題文字偏移量 (默認UIEdgeInsetsZero)
    //button.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 100);

    // 設置標題圖片偏移量 (默認UIEdgeInsetsZero)
    //button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, -100);


    // 設置高亮狀態改變陰影 陰影在雕刻與浮雕感之間變化(差不多就是去正常offset的相反數作爲新的offset)
    button.reversesTitleShadowWhenHighlighted = NO;

    // 設置高亮狀態圖片變深色 (默認YES)
    button.adjustsImageWhenHighlighted = YES;

    // 設置禁用狀態圖片變淺色 (默認YES)
    //button.enabled = NO;
    button.adjustsImageWhenDisabled = YES;

    // 設置高亮狀態下按鈕發光 (默認NO)
    // 多用於信息按鈕或重要按鈕
    // 若設置了標題圖片則圖片發光 若未設置則按鈕中間發光
    button.showsTouchWhenHighlighted = YES;

    // 想深入瞭解TintColor請猛戳這裏:http://www.cocoachina.com/ios/20150703/12363.html?utm_medium=referral&utm_source=pulsenews
    //[button setTintColor:[UIColor blueColor]];

    // 設置事件
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    /*
     UIControlEventTouchDown            按下
     UIControlEventTouchDownRepeat      多次按下
     UIControlEventTouchDragInside      保持按下然後在按鈕及其一定的外圍拖動
     UIControlEventTouchDragOutside     保持按下,在按鈕外面拖動
     UIControlEventTouchDragEnter       DragOutside進入DragInside觸發
     UIControlEventTouchDragExit        in到out觸發
     UIControlEventTouchUpInside        在按鈕及其一定外圍內鬆開
     UIControlEventTouchUpOutside       按鈕外面鬆開
     UIControlEventTouchCancel          點擊取消
     */

    // 獲取按鈕當前狀態的屬性 (只讀)
    /*
     button.currentTitle                當前按鈕上顯示的標題(只讀).當按鈕狀態改變時值自動改變.值可以爲nil
     button.currentTitleColor           當前標題顏色(只讀).此值要保證不爲nil,默認是白色
     button.currentTitleShadowColor     標題的陰影顏色(只讀).默認是白色
     button.currentImage                當前按鈕上的圖片(只讀).可以是nil.
     button.currentBackgroundImage      當前按鈕背景圖片(只讀).可以是nil.
     button.currentAttributedTitle      當前按鈕上顯示的富文本標題(只讀).當按鈕狀態改變時值自動改變.值可以爲nil
     button.titleLabel                  顯示按鈕當前標題的視圖(只讀).雖然它是隻讀的,但是它的屬性是可讀寫的.它的屬性在按鈕還沒有顯示之前就有返回值.系統按鈕這些值爲nil
     button.imageView                   按鈕上的圖片視圖(只讀).雖然它是隻讀的,但是他的屬性是可讀寫的.imageView的屬性在按鈕還沒有顯示前就有值了.系統按鈕這些值是nil
     */

    [self.view addSubview:button];

}

- (void)buttonAction:(UIButton *)button
{

}

/*
 – backgroundRectForBounds:     返回背景繪製區域.
 – contentRectForBounds:        返回內容繪製區域.內容區域是顯示圖片和標題及他們特定對齊縮放等的範圍.
 – titleRectForContentRect:     返回標題的繪製區域.
 – imageRectForContentRect:     返回圖片的繪製區域.
*/
發佈了44 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章