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 中的值时,您的视图都会更新。