Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Ios IBDesignable UIButton不带IBInspectable的IB渲染_Ios_Xcode_Swift_Ibdesignable_Ibinspectable - Fatal编程技术网

Ios IBDesignable UIButton不带IBInspectable的IB渲染

Ios IBDesignable UIButton不带IBInspectable的IB渲染,ios,xcode,swift,ibdesignable,ibinspectable,Ios,Xcode,Swift,Ibdesignable,Ibinspectable,我有下面的代码来创建一个自定义的IBDesignable UIButton。请注意,我没有任何iInspectable,因为我不需要任何。我希望所有自定义按钮都相同 import UIKit @IBDesignable class ShButton: UIButton { required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self._setup() } override init(fra

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

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 {
}

}
有两个问题:

  • ShButton类不会显示在IB中的自定义类下拉列表中,我必须手动键入它并提供模块名。我还注意到这里也没有显示“Designables Up-Date(可指定最新)”的指示器,这在许多关于该主题的教程中都有显示
  • 它不会在IB中渲染。但是,当我在模拟器中运行项目时,它会正确渲染。我是否遗漏了任何东西,以便在IB中呈现

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

    @IBDesignable class ShButton:ui按钮{
    必需的初始化?(编码器aDecoder:NSCoder){
    super.init(编码者:aDecoder)
    self.\u设置()
    }
    重写初始化(帧:CGRect){
    super.init(frame:frame)
    self.\u设置()
    }
    重写func prepareForInterfaceBuilder(){
    super.prepareforPrinterFaceBuilder()
    self.\u设置()
    }
    专用功能设置(){
    self.layer.cornerRadius=5.0
    self.layer.masksToBounds=true
    self.layer.borderColor=UIColor.whiteColor().CGColor
    self.layer.borderWidth=1.0
    self.setNeedsDisplay()
    }
    }
    
    这使我可以在按钮上设置默认的
    cornerRadius
    ,而不必使用
    i可检测的
    ,并且可以在情节提要和运行时使用


    编辑:更新的答案

    你有没有发现这个问题?没有,对不起,我不知道你在运行哪个版本的Xcode?您提供的代码在Xcode 7.2上运行良好,将
    required init(coder-aDecoder:NSCoder)
    更改为
    required init(coder-aDecoder:NSCoder)