如何将自定义字体应用于整个框架中的所有Label,UITextField和UIButton?

时间:2018-08-09 04:51:06

标签: ios swift user-interface fonts ios-frameworks

我正在使用通用的屏幕和功能来创建自己的框架。我坚持要实现以下目标:

  • 我在框架内有3个屏幕,分别具有UILabelUITextField
  • 我想将字体应用于整个应用程序使用的框架内的所有UILabelUITextField
  

示例:如果我在自己的计算机上使用“ Kingthings_Trypewriter_2.ttf”   应用程序,然后通过编写此行应更改所有字体   UILabelsUITextFields

UILabel.appearance().font = UIFont(name: "Kingthings_Trypewriter_2", size: 20)
UITextView.appearance().font = UIFont(name: "Kingthings_Trypewriter_2", size: 20)
  • 通过使用上面的代码,它仍然适用于应用程序的标签和UITextField,但不适用于 Framework 的标签和UITextField。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

声明一个特定的类,并在整个框架中使用该自定义标签或文本视图。

  class FrameWorkLabel: UILabel{

var frameWorkFont: UIFont?


private func setupViews(){
    font = frameWorkFont ?? UIFont.frameWorkFont
}

override init(frame: CGRect) {
    super.init(frame: frame)
    setupViews()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setupViews()
}

 }

  class FrameWorkTextField: UITextField{

var frameWorkFont: UIFont?

private func setupViews(){
    font = frameWorkFont ?? UIFont.frameWorkFont
}

override init(frame: CGRect) {
    super.init(frame: frame)
    setupViews()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setupViews()
}
 }






extension UIFont{
static let frameWorkFont = UIFont.systemFont(ofSize: 18)
}

在项目中的任何位置使用label或textfield的实例。

@IBOutlet weak var label : FrameWorkLabel!
//or
let label1 = FrameWorkLabel()

@IBOutlet weak var textField : FrameWorkTextField!

let textField1 = FrameWorkTextField()

答案 1 :(得分:0)

将代码放入AppDelegate didFinishLaunchingWithOptions方法中,它将起作用

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

 UITextView.appearance().font = UIFont(name: "Kingthings_Trypewriter_2", size: 50)

}