我有一个按钮的自定义类。
import UIKit
@IBDesignable
class CustomButton: UIButton {
@IBInspectable var cornerRadiusValue: CGFloat = 10.0 {
didSet {
setUpView()
}
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.cornerRadius = 10.0
}
override func awakeFromNib() {
setUpView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setUpView()
}
func setUpView() {
self.layer.cornerRadius = 10.0
}
}
但是,角色半径未显示在故事板中的按钮上。
我理解@IBInspectable只允许您更改检查器面板中的值。我想这不是我想要的。
当我创建一个具有该类的按钮时,我希望在角逐板中显示角半径。我认为这是@IBDesignable的作用。
答案 0 :(得分:10)
答案 1 :(得分:2)
试试这个:
@IBDesignable
class CustomButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
}
答案 2 :(得分:0)
这是比接受的答案更好的解决方案:
@IBDesignable
class DesignableButton: UIButton {
@IBInspectable private var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.masksToBounds = newValue > 0
layer.cornerRadius = newValue
}
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setNeedsDisplay()
}
}
它使用计算所得的属性来避免与存储的属性重复状态。