如果字体也更改,则按钮标签颜色更改不起作用
Button label color change doesn't work if font is also changed
这是一个简单的自定义按钮示例,它在 IB 中设置为按钮的 class:
#import "TestButton.h"
@implementation TestButton
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
UIFont * font = [UIFont systemFontOfSize:8];
if ( self.setFont )
self.titleLabel.font = font;
self.titleLabel.textColor = [UIColor redColor];
}
@end
如果setFont为false,即字体不变,标签文字颜色为红色。但如果为真,则按钮文本颜色是在 IB 中设置的任何颜色。
所以问题是这里发生了什么,以及如何以编程方式更改在 IB 中分配的按钮的文本和字体。
如果有人想了解这些特性以及 IBDesignable 有多时髦,请参阅 demo project
替换
self.titleLabel.textColor = [UIColor redColor];
和
[self setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
以下代码用于设置文本:
[self setTitle:@"New Text" forState:UIControlStateNormal];
如果您想在按钮文件本身之外的任何地方设置标题或标题颜色,您可以尝试向按钮添加两个 public 属性。一个 NSString 属性 用于标题 (self.titleString) 和一个 UIColor 属性 用于标题颜色。然后,您可以在视图控制器或视图中的任何地方设置标题和/或标题颜色。然后,您将在按钮文件中使用这些属性,例如
[self setTitle:self.titleString forState:UIControlStateNormal];
这是一个简单的自定义按钮示例,它在 IB 中设置为按钮的 class:
#import "TestButton.h"
@implementation TestButton
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
UIFont * font = [UIFont systemFontOfSize:8];
if ( self.setFont )
self.titleLabel.font = font;
self.titleLabel.textColor = [UIColor redColor];
}
@end
如果setFont为false,即字体不变,标签文字颜色为红色。但如果为真,则按钮文本颜色是在 IB 中设置的任何颜色。
所以问题是这里发生了什么,以及如何以编程方式更改在 IB 中分配的按钮的文本和字体。
如果有人想了解这些特性以及 IBDesignable 有多时髦,请参阅 demo project
替换
self.titleLabel.textColor = [UIColor redColor];
和
[self setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
以下代码用于设置文本:
[self setTitle:@"New Text" forState:UIControlStateNormal];
如果您想在按钮文件本身之外的任何地方设置标题或标题颜色,您可以尝试向按钮添加两个 public 属性。一个 NSString 属性 用于标题 (self.titleString) 和一个 UIColor 属性 用于标题颜色。然后,您可以在视图控制器或视图中的任何地方设置标题和/或标题颜色。然后,您将在按钮文件中使用这些属性,例如
[self setTitle:self.titleString forState:UIControlStateNormal];