我正在使用iOS 7,尝试增加我的UIButton的titleLabel的字体大小。我是这样做的:
[[_centerButton titleLabel] setFont:[UIFont boldSystemFontOfSize:28.0]];
然而,这并没有起任何作用。每次我以不同的大小编译时,字体大小始终保持不变。即使我完全删除了那行代码,字体大小仍然保持不变。显然它仍然使用默认的大小。
我如何增加UIButton标题的字体大小?
我正在使用iOS 7,尝试增加我的UIButton的titleLabel的字体大小。我是这样做的:
[[_centerButton titleLabel] setFont:[UIFont boldSystemFontOfSize:28.0]];
然而,这并没有起任何作用。每次我以不同的大小编译时,字体大小始终保持不变。即使我完全删除了那行代码,字体大小仍然保持不变。显然它仍然使用默认的大小。
我如何增加UIButton标题的字体大小?
请查看官方的UIButton类参考文档https://developer.apple.com/library/ios/documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instp/UIButton/titleLabel
文档中提到,您实际上可以使用自己的方法设置字体:
button.titleLabel.font = [UIFont systemFontOfSize: 12];
我曾经遇到过同样的问题,你使用了Interface Builder吗?当我将标题属性设置为Plain时,它就可以正常工作了,非常奇怪。
如果您正在尝试使用 iOS 15 中的新 UIButton.configuration
进行此操作,则更改 titlelabel?.font
不起作用,因为由于现在需要设置 configuration?.title = "some title"
,所以 configuration
字段将使用系统样式覆盖它。
您需要创建一个 AttributedString
并设置 configuration?.attributedTitle = yourAttributedString
我的整个应用程序都是编程方式创建的,因此这里是我创建的自定义按钮“红色药丸”样式按钮的示例,它使用方便的 init 动态设置按钮标题。
class APButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
convenience init(title: String) {
self.init(frame: .zero)
setDynamicTitle(title: title)
}
private func configure() {
configuration = .filled()
configuration?.cornerStyle = .capsule
configuration?.baseBackgroundColor = .red
configuration?.baseForegroundColor = .white
translatesAutoresizingMaskIntoConstraints = false
}
private func setDynamicTitle(title: String) {
let font = UIFont.systemFont(ofSize: 20)
let container = AttributeContainer([NSAttributedString.Key.font: font])
let attribString = AttributedString(title, attributes: container)
configuration?.attributedTitle = attribString
}
}
extension UIButton {
func setFont(_ font: UIFont) {
if #available(iOS 15.0, *) {
self.configuration?.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { incoming in
var outgoing = incoming
outgoing.font = font
return outgoing
}
}
else {
self.titleLabel?.font = font
}
}
}
在您的情况下,问题是您没有设置应该获取特定fontSize
的UIControlStateNormal
。
我通常创建一个类型为UIButton
的类,并在awakeFromNib
中设置fontSize
。看看这篇文章。
button.configuration = nil
。关于iOS 15更多信息,请查看此处。 - rgkobashi