我正在尝试这个IBDesignable。但一如既往,它不起作用。
我的控制器代码:
@IBDesignable
class MainMenuViewController: UIViewController {
@IBOutlet weak var languagesButton: UIView!
@IBOutlet weak var keyboardSettingsButton: UIView!
@IBOutlet weak var aboutButton: UIView!
@IBOutlet weak var helpButton: UIView!
@IBInspectable var buttonsCornerRadius: CGFloat = 5 {
didSet {
languagesButton.layer.cornerRadius = buttonsCornerRadius
keyboardSettingsButton.layer.cornerRadius = buttonsCornerRadius
aboutButton.layer.cornerRadius = buttonsCornerRadius
helpButton.layer.cornerRadius = buttonsCornerRadius
}
}
override func prepareForInterfaceBuilder() {
languagesButton.layer.cornerRadius = buttonsCornerRadius
keyboardSettingsButton.layer.cornerRadius = buttonsCornerRadius
aboutButton.layer.cornerRadius = buttonsCornerRadius
helpButton.layer.cornerRadius = buttonsCornerRadius
}
}
我在界面构建器中有这个属性:
但它永远不会更新我的故事板。当我运行我的应用程序时,它只是崩溃而没有消息。
答案 0 :(得分:2)
正如我在评论中所说,你所有的IBOutlets在这个阶段都是零。在展开“可选”值时,您有一个"意外发现的nil
我可以建议的是创建一个UIView
的自定义类,然后在这个类中,你可以添加一个属性" cornerRadius"像这样@IBInspectable
:
import UIKit
@IBDesignable
class MyCustomView:UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}
使用此方法,每次更改IB中的值时,您的视图都将更新。