Ios 设置UIButton标题标签的字体会将textColor更改为默认字体吗?

Ios 设置UIButton标题标签的字体会将textColor更改为默认字体吗?,ios,uibutton,Ios,Uibutton,我现在正在为ios 6开发应用程序。这是一种表单设计应用程序,我发现如果我们在应用程序中更改标题label.textColor某个点,那么如果我们更改字体,则textColor在分配时会更改为默认值。 我像下面一样检查了这个 - (IBAction)btnLoginClicke:(UIButton *)sender { [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]]; 我将示例按钮拖动到示例view

我现在正在为ios 6开发应用程序。这是一种表单设计应用程序,我发现如果我们在应用程序中更改
标题label.textColor
某个点,那么如果我们更改字体,则textColor在分配时会更改为默认值。 我像下面一样检查了这个

- (IBAction)btnLoginClicke:(UIButton *)sender {
   [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]];
我将示例按钮拖动到示例viewcontroller,并在viewcontroller.h文件中创建名为
myButton
的IBOutlet属性 视图内加载

[myButton.titleLabel setTextColor:[UIColor redColor]];
在按钮操作中,我喜欢下面的内容

- (IBAction)btnLoginClicke:(UIButton *)sender {
   [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]];
下面是我的前后按钮点击动作截图


如果您使用以下方法设置UIButton标题的颜色:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
指定新字体时,颜色信息不会丢失


我假设这是因为UIButton类根据您使用setTitleColor(或脚本)为不同的UIButton状态设置的不同颜色在内部设置textLabel的颜色。直接更改文本标签的颜色不会更改UIButton为每个状态存储的颜色,并且每次UIButton需要重新绘制时都会重新应用这些颜色。这是设置新字体时发生的情况-UIButton必须重新绘制自身,但它将通过setTitleColor:forState:.使用颜色设置来完成此操作。

如果您使用以下方式设置UIButton标题的颜色:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
指定新字体时,颜色信息不会丢失


我假设这是因为UIButton类根据您使用setTitleColor(或脚本)为不同的UIButton状态设置的不同颜色在内部设置textLabel的颜色。直接更改文本标签的颜色不会更改UIButton为每个状态存储的颜色,并且每次UIButton需要重新绘制时都会重新应用这些颜色。这就是设置新字体时发生的情况-UIButton必须重新绘制自身,但它将通过setTitleColor:forState:.使用颜色设置来完成。如果要使应用程序中的所有按钮保持类似的颜色,最好使用全局外观设置。然后,您不必担心所有位置的按钮标题颜色

将这些行放在
didfishlaunchwithoptions
方法中的
appDelegate

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

希望这能有所帮助。

如果你想让应用程序中的所有按钮保持相似的颜色,那么最好使用全局外观设置。然后,您不必担心所有位置的按钮标题颜色

将这些行放在
didfishlaunchwithoptions
方法中的
appDelegate

[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[UIButton appearance] setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
希望有帮助