我正在尝试这个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
}
}在我的界面构建器中有这个属性:

但它从来不更新我的故事板。当我运行我的应用程序时,它就会崩溃,没有消息。


发布于 2015-02-17 12:58:25
正如我在评论中所说的,你所有的IBOutlets在这个舞台上都是零的。您有一个“意外发现为零,而展开一个可选值”。
我建议的是使用UIView创建一个自定义类,然后在这个类中添加一个属性"cornerRadius“,如下所示:
import UIKit
@IBDesignable
class MyCustomView:UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}使用此方法,并且每次更改IB中的值时,您的视图都将被更新。
https://stackoverflow.com/questions/28559713
复制相似问题