是否有可能使@IBDesignable覆盖Interface Builder中值?

问题描述 投票:6回答:3

例如,我想继承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)
  }
} 

但是,这并不影响预览界面生成器中,所有的自定义按钮出现在默认情况下15.0f字体大小。有什么想法吗?

xcode swift interface-builder ibdesignable
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()
    }
}

希望它可以帮助你:)

这是为我工作。


0
投票

我认为你必须重写与框架初始化初始化以及影响该

override init(frame: CGRect) {

    super.init(frame: frame)
    self.customInit()
}

0
投票

简单:以下解决方案通常工作或我

import UIKit

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

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

我希望这是你在找什么。

© www.soinside.com 2019 - 2024. All rights reserved.