6

例如,我想子类化UIButton并将其字体20.0f默认设置为。我可以这样写:

@IBDesignable

class HCButton: UIButton {
  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.customInit()
  }

  func customInit () {
    titleLabel?.font = UIFont.systemFontOfSize(20)
  }
} 

但这不会影响Interface Builder中的预览,默认情况下,所有自定义按钮都以15.0f字体大小显示。有什么想法吗?

4

3 回答 3

4

我创建了新IBInspectabletestFonts

import UIKit

@IBDesignable

class CustomButton: UIButton {
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.customInit()
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.customInit()
    }

    func customInit () {
        titleLabel?.font = UIFont.systemFontOfSize(20)
    }

    convenience init() {
        self.init(frame:CGRectZero)
        self.customInit()
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        self.customInit()
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        self.customInit()
    }
}

希望它可以帮助你:)

这对我有用。

于 2015-08-13T13:34:07.627 回答
0

我认为您还必须使用帧初始化程序覆盖 init 以影响它

override init(frame: CGRect) {

    super.init(frame: frame)
    self.customInit()
}
于 2015-08-13T13:17:41.410 回答
0

更容易:以下解决方案通常有效或我

import UIKit

@IBDesignable
class CustomButton: UIButton {
    open override func layoutSubviews() {
        super.layoutSubviews()
        customInit()
    }

    func customInit () {
        titleLabel?.font = UIFont.systemFontOfSize(20)
    }
}

我希望这就是你要找的。

于 2019-02-06T12:03:27.560 回答