iOS。 Interface Builder @IBInspectable 崩溃
iOS. Interface Builder @IBInspectable crashes
我正在尝试这个 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
}
}
我的界面生成器中有这个 属性:
但它从未更新我的故事板。当我 运行 我的应用程序崩溃时没有任何消息。
正如我在评论中所说,您所有的 IBOutlets 在这个阶段都是零。你有一个 "unexpectedly found nil while unwrapping an Optional value"
我的建议是自定义 UIView
的 class,然后在此 class 中添加一个 属性 "cornerRadius" 作为@IBInspectable
像这样:
import UIKit
@IBDesignable
class MyCustomView:UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}
使用这种方法,每次您更改 IB 中的值时,您的视图都会更新。
我正在尝试这个 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
}
}
我的界面生成器中有这个 属性:
但它从未更新我的故事板。当我 运行 我的应用程序崩溃时没有任何消息。
正如我在评论中所说,您所有的 IBOutlets 在这个阶段都是零。你有一个 "unexpectedly found nil while unwrapping an Optional value"
我的建议是自定义 UIView
的 class,然后在此 class 中添加一个 属性 "cornerRadius" 作为@IBInspectable
像这样:
import UIKit
@IBDesignable
class MyCustomView:UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}
使用这种方法,每次您更改 IB 中的值时,您的视图都会更新。