Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 是否可以使@IBDesignable重写接口生成器值?_Xcode_Swift_Interface Builder_Ibdesignable - Fatal编程技术网

Xcode 是否可以使@IBDesignable重写接口生成器值?

Xcode 是否可以使@IBDesignable重写接口生成器值?,xcode,swift,interface-builder,ibdesignable,Xcode,Swift,Interface Builder,Ibdesignable,例如,我希望子类化UIButton,并在默认情况下将其字体设置为20.0f。我可以这样写: @IBDesignable class HCButton: UIButton { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.customInit() } func customInit () { titleLabel?.font = UIFont.system

例如,我希望子类化
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
字体大小显示。有什么想法吗?

我认为您必须使用帧初始值设定项覆盖init以影响它

override init(frame: CGRect) {

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

我已将新的
I可检测
创建为
testFonts

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()
    }
}
希望它能帮助你:)


这对我有效。

更简单:以下解决方案通常对我有效

import UIKit

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

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

我希望这就是您要查找的内容。

是否将
@IBInspectable var testFonts:UIFont
显示在界面生成器中?@workenstein否:(未显示。但字体大小已更改。请将其从列表中删除并粘贴
标题标签?.font=UIFont.systemFontOfSize(20)
来自最初的问题。这可能会让一些流浪者感到困惑。谢谢你提供的线索!是的,这没问题,我现在唯一能梦想的事情是——让这个默认值取代界面生成器中的字体值。嘿,@AshishKakkad,很棒的帖子!但是我注意到,在我的测试中,
awakeFromNib
函数不需要用来制作
customInit
设置在界面生成器中可见。添加该设置有什么原因吗?另外,我相信也不需要
convency init()