I have this custom class for a button.
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
}
}
But the corner radius is not showing on the button in the storyboard.
I understand @IBInspectable just allows you to change the value in the inspector panel. I guess thats not what I am looking for.
I would like the corner radius to just show in storyboard when I create a button with that class. Which I thought that's what @IBDesignable does.
Try this one:
Your code is crashing in IB, so designability fails. Here is much simpler code that works:
Now the button is both inspectable and designable:
And it also works in the running app.
Here's a better solution than the accepted answer:
It uses a computed property to avoid duplicating state with a stored property.