2014-01-28 42 views
1

我现在正在开发ios 6的应用程序。这是一种表单设计应用程序,我发现如果我们在应用程序中更改titlelabel.textColor某个点,那么如果我们更改字体,textColor将在分配时更改为默认值。 我检查这个像下面设置UIButton的titleLabel字体会将textColor更改为默认值?

我拖累样本按钮,我的样本视图 - 控制和创造-viewDidLoad

[myButton.titleLabel setTextColor:[UIColor redColor]]; 

,并在按钮的动作我不喜欢在下面viewcontroller.h文件 名为myButton一个IBOutlet属性下面

- (IBAction)btnLoginClicke:(UIButton *)sender { 
    [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]]; 

是我之前和之后的按钮点击动作截图

enter image description here

enter image description here

回答

1

如果您设置的UIButton标题使用颜色:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 

当你将一个新的字体颜色信息也不会丢失。

我认为这是因为UIButton类在内部根据您为不同的UIButton状态使用setTitleColor(或故事板)设置的不同颜色设置textLabel的颜色。直接改变textLabel的颜色不会改变UIButton为每个状态存储的颜色,并且每次UIButton需要重绘时它们都会重新应用。这是设置新字体时会发生的情况 - UIButton必须重新绘制自己,但是它会使用setTitleColor:forState:的颜色设置来执行此操作。

5

如果您要保持应用程序中所有按钮的颜色相似,那么最好选择全局设置。那么你不必担心所有地方的按钮标题颜色。

将这些行放在您的appDelegatedidFinishLaunchWithOptions方法中。

[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
[[UIButton appearance] setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

希望有所帮助。