天天看點

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

uibutton中設定titl方法包括以下幾種:

在定義uibutton的時候,經常會使用titlelabel.text設定uibutton的值,但是run出來确啥都沒顯示,不起作用啊!!!,這是怎麼會事?難道是api的bug??

1.其實不是,正常使用uibutton的時候設定title是要對應button的controlstate,因為uibutton繼承于uicontrol,在設定值得時候需要對象狀态,是以一般都會用

settitle:(nsstring *)title forstate:(uicontrolstate)state 設定 title;

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

3.對應的currenttitle

也就是/normal/highlighted/selected/disabled狀态下的title值,屬性為readonly;

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

看到這裡你明白了嗎?

預設uibutton的titlelable是沒設定frame的,而且hidden=yes;隻要你設定這2個值就可以正常顯示,

無論你采用何種方式生産uibutton:

都一樣;

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