2013-04-21 92 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];