Ios IBDesignable UIButton不带IBInspectable的IB渲染
我有下面的代码来创建一个自定义的IBDesignable UIButton。请注意,我没有任何iInspectable,因为我不需要任何。我希望所有自定义按钮都相同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
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 {
}
}
有两个问题:
我还是一个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)