我想:
我设法插入了自定义字体,但是在文本大小调整方面遇到了问题。
我尝试了以下解决方案,但它们仍然不能完全满足我的要求:
AppDelegate
中添加了此行:UILabel.appearance().font = UIFont(name: "yourFont", size: yourSize)
yourSize
字体大小。我扩展了UILabel,使其强制执行changeFontName。
extension UILabel {
override open func awakeFromNib() {
super.awakeFromNib()
changeFontName()
}
func changeFontName() {
self.font = UIFont(name: "yourFont", size: self.font.pointSize)
}
}
这是可行的,但情节提要板显然不会更新视图。而且我不确定这是否是正确的方法
答案 0 :(得分:2)
我采用的解决方案与#2 solution
类似,但是它也在情节提要上呈现了字体。
我们创建了一些扩展默认UIView的类,例如,用于UILabel
和UIButton
的类。您可以执行以下操作:
@IBDesignable
public class CustomUILabel: UILabel {
public override func awakeFromNib() {
super.awakeFromNib()
configureLabel()
}
public override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
configureLabel()
}
func configureLabel() {
font = UIFont(name: "MyCustomFont", size: self.font.pointSize)
}
}
@IBDesignable
public class CustomUIButton: UIButton {
public override func awakeFromNib() {
super.awakeFromNib()
configureLabel()
}
public override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
configureLabel()
}
func configureLabel() {
titleLabel?.font = UIFont(name: "MyCustomFont", size: self.titleLabel!.font.pointSize)
}
}
然后在情节提要中,我们在Identity Inspector
中将该类设置为Custom Class
,用于必须更改字体的每个组件。
这不是最干净的解决方案,但是至少如果您在整个应用程序中更改MyCustomFont
字体,就可以一次通过代码对其进行更改。