iOS 中UIButton的 settitle 和 titlelabel的使用誤區

來源:互聯網
上載者:User

標籤:style   blog   class   code   java   ext   

UIButton中設定Titl方法包括以下幾種:

- (void)setTitle:(NSString *)title forState:(UIControlState)state;        - (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state               @property(nonatomic,readonly,retain) NSString *currentTitle;             @property(nonatomic,readonly,retain) UILabel     *titleLabel;

 

在定義UIButton的時候,經常會使用titleLabel.text設定UIButton的值,但是Run出來確啥都沒顯示,不起作用啊!!!,這是怎麼會事?難道是API的bug??

1.其實不是,正常使用UIButton的時候設定Title是要對應Button的ControlState,因為UIButton繼承於UIControl,在設定值得時候需要對象狀態,所以一般都會用

setTitle:(NSString *)title forState:(UIControlState)state 設定 Title;

2.setAttributedTitle是iOS6之後的方法,使用起來很簡單,沒特色說明。執行個體如下:

 [uibutton setAttributedTitle:[[NSAttributedString alloc]initWithString:@"3333333"] forState:UIControlStateNormal];

 

3.對應的currentTitle 也就是/normal/highlighted/selected/disabled狀態下的title值,屬性為readOnly;

4.至於titleLabel是設定的時候為啥不顯示,比較神奇。查了官方文檔以後才發現,真正的原因再於:(以下是我使用UIButton列印titleLabel對象的結果)

po uibutton.titleLabel
<UIButtonLabel: 0x7575800; frame = (0 0; 0 0); text = ‘11111111‘; clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7572980>>

看到這裡你明白了嗎?

預設UIButton的titleLable是沒設定frame的,而且hidden=YES;只要你設定這2個值就可以正常顯示,

無論你採用何種方式生產UIButton:

 UIButton *uibtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 100, 100, 30)]; 否者  
UIButton *uibtn = [UIButton buttonWithType:UIButtonTypeCustom];

[uibtn setFrame:CGRectMake(0, 100, 100, 30)];

都一樣;

 

總之,上面是我遇到過2次使用titleLabel不顯示的總結,希望對以後有協助。推薦使用第一種方式設定title不會遇到那麼多麻煩。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.