01-UI基礎-05-01-UIButton : UIControl

##繼承關係 UIButtonhtml

##1、UIButton屬性 ###1.一、UIButton狀態ios

enum {
    UIControlStateNormal = 0, // 常規狀態顯現 
    UIControlStateHighlighted = 1 << 0, // 高亮狀態顯現 
    UIControlStateDisabled = 1 << 1, // 禁用的狀態纔會顯現
    UIControlStateSelected = 1 << 2, // 選中狀態 
    UIControlStateApplication = 0x00FF0000, // 當應用程序標誌時 
    UIControlStateReserved = 0xFF000000 //爲內部框架預留,能夠無論他 
};

###1.二、Uibutton類型app

typedef enum {
    UIButtonTypeCustom = 0, // 自定義風格
    UIButtonTypeRoundedRect, // 圓角矩形 
    UIButtonTypeDetailDisclosure, // 藍色小箭頭按鈕,主要作詳細說明用
    UIButtonTypeInfoLight, // 亮色感嘆號
    UIButtonTypeInfoDark, // 暗色感嘆號
    UIButtonTypeContactAdd // 十字加號按鈕
} UIButtonType;

###1.三、文字、圖標等框架

// 給按鈕設置文字時,蘋果文檔說明,不能使用label對象設置文字的顏色或者陰影顏色,相反必須使用setTitleColor:forState: and setTitleShadowColor:forState:這兩個方法才能修改

// 設置對應狀態的標題內容default is nil. title is assumed to be single line
- (void)setTitle:(NSString *)title forState:(UIControlState)state;  
// 設置對應狀態的標題顏色           
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;   

// 設置對應狀態的標題陰影顏色            
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state;         

// 設置對應狀態的按鈕的圖片
- (void)setImage:(UIImage *)image forState:(UIControlState)state;        
// 設置對應狀態的按鈕背景圖片
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;

###1.四、adjustsImageWhenDisabledide

當按鈕禁用的狀況下,圖像的顏色會被畫深一點,默認爲YES。字體

###1.五、adjustsImageWhenHighlightedcode

當按鈕高亮的狀況下,圖像的顏色會被畫深一點,默認爲YES。orm

###1.六、showsTouchWhenHighlightedhtm

button.showsTouchWhenHighlighted=YES;點擊時的閃光效果會被前景圖片遮住中間部分;也就是設置按鈕按下會發光對象

###1.七、contentEdgeInsets

設置按鈕的內部內容(包含按鈕圖片和標題)離按鈕邊緣上下左右的距離。

UIEdgeInsets insets; // 設置按鈕內部圖片間距
insets.top = insets.bottom = insets.right = insets.left = 10;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 標題間距

###1.八、文字顯示位置、字體的大小、字體顏色

  • 顯示位置
btn.frame = CGRectMake(x, y, width, height);
[btn setTitle: @"search" forState: UIControlStateNormal];

設置按鈕上的自體的大小

[btn setFont: [UIFont systemFontSize: 14.0]];    //這種能夠用來設置字體的大小,可是可能會在未來的SDK版本中去除改方法

應該使用

btn.titleLabel.font = [UIFont systemFontOfSize: 14.0];
[btn seBackgroundColor: [UIColor blueColor]];

最後將按鈕加入到指定視圖superView

[superView addSubview: btn];
  • 字體大小、顏色

初始化button

tvnamelabel=[[UIButton alloc]initWithFrame:CGRectMake(5,5,200,40)];

這樣初始化的button,文字默認顏色是白色的,全部若是背景也是白色的話,是看不到文字

btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft ;//設置文字位置,現設爲居左,默認的是居中
[btn setTitle:@「title」forState:UIControlStateNormal];// 添加文字
  • 對齊方式

有些時候咱們想讓UIButton的title居左對齊,咱們設置

btn.textLabel.textAlignment = UITextAlignmentLeft;// 是沒有做用的

正確的設置

btn.contentHorizontalAlignment = UIControlContentHorizonAlignmentLeft;

可是此時文字會緊貼到左邊框,咱們能夠設置

btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);
// 使文字距離作邊框保持10個像素的距離。

設置UIButton上字體的顏色設置UIButton上字體的顏色,不是用

[btn.titleLabel setTextColor:[UIColorblackColor]];
btn.titleLabel.textColor=[UIColor redColor];

正確地作法

[btn setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];

##2、事件 ###2.一、添加事件

這些事件都是基於觸摸、基於值、基於編輯。有以下事件會觸發。

// 原方法聲明
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; 
/**controlEvents事件類型:
1. UIControlEventTouchDown      // 按下    
2. UIControlEventTouchDownRepeat  屢次按下   
3. UIControlEventTouchUpInside // 在按鈕及其必定外圍內鬆開
4. UIControlEventTouchUpOutside // 按鈕外面鬆開 
*/
// 調用樣例
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];

###2.二、移除事件

// 原方法聲明
- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; 
// controlEvents 參數同上
// 調用樣例
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];

##3、官方文檔 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/index.html#//apple_ref/occ/cl/UIButton

相關文章
相關標籤/搜索