Interface Builder按哪个顺序评估IBInspectables?

时间:2018-09-11 10:20:01

标签: ios swift interface-builder ibdesignable ibinspectable

我有一个借助IBInspectables设计的自定义UI元素,因此我可以在Interface Builder中使用和修改它。有2个可检查对象可以有效地更改元素的相同属性,但方式稍有不同。

enter image description here

在屏幕快照中,有title设置元素的标题,还有locTitleKey通过键获取NSLocalizedString并将其设置为标题。

正如我从将不同的值传递给这些可检查对象所看到的:

  1. 如果指定了locTitleKey,并且title为空,则使用本地化的字符串
  2. 如果同时指定了两者,则使用title并忽略本地化的内容

问题-这种行为可以预测吗?

换句话说,我可以安全地假设对IBInspectables的求值顺序始终是相同的吗? ({title,然后locTitleKey

为了提供更多的上下文,这里是所使用的代码片段。

title在类本身的范围内定义:

@IBDesignable
class StandardInputField: UIView, NibLoadable {
    //...
    @IBInspectable
    public var title: String? {
        didSet {
            titleLabel.text = title
        }
    }
    //...
}

并且locTitleKey被定义为扩展名:

extension StandardInputField {
    @IBInspectable var locTitleKey: String? {
        get {
            return nil
        }
        set(key) {
            title = key?.localized
        }
    }
}

0 个答案:

没有答案