如果字体也被更改,则按钮标签颜色更改不起作用

时间:2015-03-24 21:43:03

标签: ios cocoa-touch ibdesignable

这是一个简单的示例自定义按钮,在IB中设置为按钮类:

#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

2 个答案:

答案 0 :(得分:0)

替换

self.titleLabel.textColor = [UIColor redColor];

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

答案 1 :(得分:0)

以下代码用于设置文字:

[self setTitle:@"New Text" forState:UIControlStateNormal];

如果要将标题的标题或颜色设置在按钮文件本身以外的任何位置,则可以尝试向按钮添加两个公共属性。标题的一个NSString属性(self.titleString)和标题颜色的一个UIColor属性。然后,您可以在视图控制器或视图中的任何位置设置标题和/或标题颜色。然后,您将在按钮文件中使用这些属性,如

[self setTitle:self.titleString forState:UIControlStateNormal];