问题
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.
回答1:
Your code is crashing in IB, so designability fails. Here is much simpler code that works:
@IBDesignable
class CustomButton: UIButton {
@IBInspectable var cornerRadiusValue: CGFloat = 10.0 {
didSet {
setUpView()
}
}
override func awakeFromNib() {
super.awakeFromNib()
setUpView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setUpView()
}
func setUpView() {
self.layer.cornerRadius = self.cornerRadiusValue
self.clipsToBounds = true
}
}
Now the button is both inspectable and designable:
And it also works in the running app.
回答2:
Try this one:
@IBDesignable
class CustomButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
}
来源:https://stackoverflow.com/questions/36759138/corner-radius-not-showing-on-button-in-storyboard-with-ibdesigable-ibinspectab