【问题标题】:IBDesignable UIButton IB Render without IBInspectables没有 IBInspectables 的 IBDesignable UIButton IB 渲染
【发布时间】:2015-03-24 16:06:57
【问题描述】:

我有下面的代码来创建一个自定义的 IBDesignable UIButton。请注意,我没有任何 IBInspectables,因为我不需要任何东西。我希望我的所有自定义按钮都相同。

import UIKit

@IBDesignable class ShButton: UIButton {

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

override init(frame: CGRect) {
    super.init(frame: frame)
    self._setup()
}


override func awakeFromNib() {
    self._setup()
}

override func prepareForInterfaceBuilder() {
    self._setup()
}

private func _setup(){
    self.layer.cornerRadius = 5.0
    self.layer.masksToBounds = true
    self.layer.borderColor = UIColor.whiteColor().CGColor
    self.layer.borderWidth = 1.0
    self.setNeedsDisplay()
}

override func drawRect(rect: CGRect) {
    super.drawRect(rect)
}

deinit {
}

}

有两个问题:

  1. ShButton 类未显示在 IB 的自定义类下拉列表中,我必须手动键入它并提供模块名称。我还注意到这里也没有显示“Designables Up to Date”指示器,这在许多关于该主题的教程中都有显示。
  2. 它不在 IB 中呈现。但是,当我在模拟器中运行项目时,它会正确呈现。我是否缺少任何使其在 IB 中呈现的内容?

【问题讨论】:

  • 你有想过这个吗?
  • 不,抱歉,我不能
  • 您运行的是哪个版本的 Xcode?您提供的代码在 Xcode 7.2 上运行良好,通过将 required init(coder aDecoder: NSCoder) 更改为 required init?(coder aDecoder: NSCoder)

标签: ios xcode swift ibdesignable ibinspectable


【解决方案1】:

我还是个 iOS 新手,但我也遇到过类似的情况,这对我来说效果很好:

@IBDesignable class ShButton: UIButton {

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

    override init(frame: CGRect) {
        super.init(frame: frame)
        self._setup()
    }

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

    private func _setup(){
        self.layer.cornerRadius = 5.0
        self.layer.masksToBounds = true
        self.layer.borderColor = UIColor.whiteColor().CGColor
        self.layer.borderWidth = 1.0
        self.setNeedsDisplay()
    }
}

这让我可以在按钮上设置默认的cornerRadius,而不必使用IBInspectable,并且在情节提要和运行时都可以使用。

编辑:更新答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多