標籤:
什麼是按鈕?
出現的一系列的都是按鈕,一般我們在做項目的時候判斷按鈕的標準是: 當點擊的時候能夠做出相應反應的一般都是按鈕
按鈕的功能能比較多:既能顯示文字 又能顯示圖片 而且我們還可以自訂按鈕 調整圖片和文字的位置和相片順序
我們一般建立按鈕在storyboard裡面直接拖一個按鈕 其實storyboard本質還是將我們設定的一些屬性轉換成為代碼UIButton的狀態
- 預設情況(Default)
- 對應的枚舉常量為UIControlStateNormal
- 按鈕被按下去的時候手指還沒有鬆開的時候的狀態
- 對應的枚舉常量 UIControlStateHighlighted
- 如果設定了按鈕的Enabled 屬性為NO 就是處於不可用(disable)狀態 表示按鈕不可以被點擊
- 對應的枚舉常量UIControlStateDisabled
- 當按鈕被選中之後 顯示的狀態
- 對應的枚舉常量UIControlStateSelected
設定按鈕的背景圖片
- 設定按鈕在不同狀態下得背景圖片 注意:為了保證高亮狀態下的圖片正常顯示 必須設定按鈕的type為custom
按鈕的樣式使用代碼建立按鈕
UIButton的類型
- UIButtonTypeCustom //自訂類型
- UIButtonTypeRoundedRect //圓角類型
- UIButtonTypeDetailDisclosure //細節展示按鈕
- UIButtonTypeInfoLight //淺色背景的資訊按鈕
- UIButtonTypeInfoDark //暗色背景的資訊按鈕
- UIButtonTypeContactAdd // 添加按鈕
UIButton常用屬性
//設定對應狀態的標題內容- (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;
注意:
給按鈕設定文字時,蘋果文檔說明,不能使用label對象設定文字的顏色或者陰影顏色,相反必須使用setTitleColor:forState: and setTitleShadowColor:forState:這兩個方法才能修改這些值。
為按鈕添加事件
為按鈕添加事件 用以下方法
添加事件- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;這些事件都是基於觸摸、基於值、基於編輯。有如下事件會觸發。在點擊按鈕是按鈕是凹下去,然後彈起才觸發起事件,
按鈕的事件狀態有以下幾種:
- UIControlEventTouchDown // 按下
- UIControlEventTouchDownRepeat 多次按下
- UIControlEventTouchUpInside // 在按鈕及其一定外圍內鬆開
- UIControlEventTouchUpOutside // 按鈕外面鬆開
其他屬性
adjustsImageWhenDisabled 當按鈕禁用的情況下,映像的顏色會被畫深一點,預設為YES。
adjustsImageWhenHighlighted 當按鈕高亮的情況下,映像的顏色會被畫深一點,預設為YES。
showsTouchWhenHighlighted 如果設定為YES 點擊時的閃光效果會被前景圖片遮住中間部分;
contentEdgeInsets 設定按鈕的內部內容(包含按鈕圖片和標題)離按鈕邊緣上下左右的距離。
說到contentEdgeInset不得不說下下面兩個屬性:
疑難問題
有些時候我們想讓UIButton的title居靠左對齊,我們設定 ?btn.textLabel.textAlignment = UITextAlignmentLeft 是沒有作用的
我們需要設定 btn.contentHorizontalAlignment = UIControlContentHorizonAlignmentLeft;
但是問題又出來,此時文字會緊貼到左邊框,我們可以設定 btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0); 使文字距離左邊框保持10個像素的距離。
好了今天 就分享到這裡了 如果你有更好的建議 請留言評論! 謝謝支援
IOS開發UI基礎之UIButton