尝试粗体化UIButton的titleLabel以响应在iOS中调用的委托方法

时间:2013-09-16 20:42:15

标签: ios uibutton uitextfielddelegate

我正在开发一个我调用UITextFieldDelegate方法的应用程序:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { }

我成功调用它,在方法中,我启用了一个特定的按钮。这也很好。但是,我面临的问题是,当按钮启用时,我无法在按钮粗体上创建标题。我在Interface Builder中设置了字体,我试图以编程方式加粗标题。以下是显示我正在做的事情的相关代码:

        if ([keys count] == [_tireName count]) {

            [_doneButton setEnabled:YES];//this line works
            [[_doneButton titleLabel] setFont:[UIFont boldSystemFontOfSize:28]];//this line does nothing


        } else if ([keys count] < [_tireName count]){

            [_doneButton setEnabled:NO];//this line works
            [[_doneButton titleLabel] setFont:[UIFont systemFontOfSize:28]];//this line does nothing

        }

忽略“if”子句本身。当按钮启用时,我希望按钮上的文本为粗体,并且我希望按钮上的文本在禁用时为“正常”。谁能看出我做错了什么?

感谢所有回复的人。

4 个答案:

答案 0 :(得分:28)

如果您正在使用标准字体并希望将其设为粗体,则更清晰:

[_doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:[UIFont systemFontSize]]];

这样,您不必担心字体系列或大小。

答案 1 :(得分:7)

_doneButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:24];

这将使您的文本变为粗体,因为您使用的是系统字体,即helvetica。我希望它有所帮助

答案 2 :(得分:3)

Swift 3

doneButton.titleLabel?.font = UIFont.systemFont(ofSize: 28, weight: UIFontWeightBold)

可以使用以下权重:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy
UIFontWeightBlack

请注意Apple的文档:

// Beware that most fonts will _not_ have variants available in all these weights!

答案 3 :(得分:2)

与BooTooMany的答案类似,但我发现它实际上在UIButton中使用时改变了大小。

我用过:

[_doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:_doneButton.titleLabel.font.pointSize]];

这样,它保持与开始时相同的字体大小,只是使其变为粗体