首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS。Interface @IBInspectable崩溃

iOS。Interface @IBInspectable崩溃
EN

Stack Overflow用户
提问于 2015-02-17 10:22:23
回答 1查看 1.5K关注 0票数 3

我正在尝试这个IBDesignable。但像往常一样不起作用。

我的控制器代码:

代码语言:javascript
复制
@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
    }
}

在我的界面构建器中有这个属性:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-17 12:58:25

正如我在评论中所说的,你所有的IBOutlets在这个舞台上都是零的。您有一个“意外发现为零,而展开一个可选值”。

我建议的是使用UIView创建一个自定义类,然后在这个类中添加一个属性"cornerRadius“,如下所示:

代码语言:javascript
复制
import UIKit

@IBDesignable

class MyCustomView:UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }
}

使用此方法,并且每次更改IB中的值时,您的视图都将被更新。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28559713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档