2013-04-21 43 views
0

我在XIB中創建了一個沒有圖像的自定義UIButton。當按鈕被點擊時,標題消失。自定義,無圖像的UIButton標題消失

這些答案並不能幫助我,因爲我沒有那個可以重疊文本

任何圖像這並沒有幫助因爲我沒有任何背景顏色

這其中並沒有幫助過

+0

無法重現你的問題。嘗試使用代碼創建按鈕,看看它是否仍然發生。 – joao 2013-05-02 13:45:24

+3

分享你的代碼和截圖。 – 2013-05-03 11:19:02

+0

在你的xib中,如果你看看按鈕的不同狀態,他們有不同的標題嗎? – lnafziger 2013-05-04 02:12:44

回答

1

在一個XIB,可以通過改變State Config,然後設置的標題對應的狀態設置標題爲每個不同的狀態。在以下示例中,我已將Default州標題設置爲TitleHighlighted州標題爲單個空格,這會使其在應用程序中顯示爲空白。但請注意,預覽僅顯示Default設置,並且不會更新其他配置(請參見下面的圖像)。

默認狀態標題
Default Title

亮狀態標題
Highlighted Title

4

的UIButton和它的子類有4種狀態,可以通過代碼或配置階段在IB

改變
  1. normal
  2. highlighted
  3. selected
  4. 在UIKit框架
  5. disabled

檢查UIButton.h,你會看到如何使用它們:

- (void)setTitle:(NSString *)title forState:(UIControlState)state; 
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state; 
- (void)setImage:(UIImage *)image forState:(UIControlState)state; 
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state; 

如果你的setTitle,圖像,或將backgroundImage對於正常狀態,其他狀態的默認狀態與正常狀態相同。

默認狀態是正常的,其他國家可以設定:從普通

[button setHighlighted:YES]; 
[button setSelected:YES]; 
[button setEnable:NO];//disable state 

按鈕改變突出了點擊,所以如果你想保持正常的標題,請檢查:

- 不要使用setImage或配置圖像的正常和高光狀態(只使用backgroundImage)

- 不要setTitle:@「」forState:UIControlStateHighlighted或配置爲 什麼都不IB。 - 不要setTitleColor或在IB中選擇與UIButton backgroundColor相同的titleColor。

您可以使用4個不同的標題和1個按鈕的backGroundImages進行測試,並知道它如何顯示。

+0

沒有幫助: [_myButton setTitle:@「myText」forState:UIControlStateHighlighted]; – Luda 2013-05-02 13:20:56

+4

請顯示一些代碼!我不能邀請所有的情況。 – strong 2013-05-03 00:47:49

+0

除了按鈕功能定義,我沒有在.m中做任何事情。只要xib。我試過這個:[_myButton setTitle:@「myText」forState:UIControlStateHighlighted];正如你所建議的那樣,但它沒有幫助。 – Luda 2013-05-05 11:14:06

1

我也有過這種情況。我相信這個問題是,因爲按鈕默認是一個白色的圓形按鈕,並帶有按鈕默認的「高亮」狀態,並且在按下按鈕時反轉文本顏色,它與自定義按鈕相同。現在,由於文本是藍色的,並且背景對於圓角按鈕是白色的,所以在自定義按鈕中它是完全相同的。自定義按鈕的文本將是您想要的(設置)它的任何內容。背景通常也是一種透明的顏色,並且自定義按鈕被突出顯示時,它會導致文本顏色反轉,就像常規按鈕一樣。這導致文本顏色變得透明,並且自定義按鈕的背景不會改變,因爲沒有什麼可以改變,因此按鈕是自定義的,這意味着您必須設置高亮狀態和其他屬性按鈕)。之前我曾經遇到過這種情況,而且我從未真正意識到這一點,但我希望這可以幫助你。

1
// for setting text in normal state 

[_myButton setTitle:@"myText" forState:UIControlStateNormal]; 


// show another text on touch 

[_myButton setTitle:@"myText" forState:UIControlStateHighlighted];