如何在 Interface Builder 中反映从其他 属性 到 属性 的更改

How to reflect changes from other property to a property in Interface Builder

我的目标是创建一个像 UISlider 这样的自定义视图。在我的自定义视图中,我使用 IBDesignableIBInspectable 使其显示在 Interface Builder 中。

如果您在 Interface Builder 中查看 UISlider:

你可以看到如果我将其 Value 更改为大于其 MaximumMaximum 会在 Interface Builder 中自动更新其值。

我的问题是:当我在 Interface Builder 中更改其他属性(如 Value)的值时,如何使 属性(如 Maximum)更改其值?

提前致谢!

编辑:这是我当前的实现:

当前结果:

你可以看到当 Minimum 值改变时,Value 的值也改变了,但它在属性检查器中的值没有改变。

我做了一些测试,恐怕我们目前无法在 Interface Builder 中执行类似的操作。即使您的@IBInspectable 具有默认值,IB 也会忽略它并且不显示它。该值在您设置之前不会指定(“--”)。

@IBInspectable 目前 (Xcode8.3) 只是更好地设置 "User defined runtime attributes" 的方式。这些属性在使用 KVC 加载 NIB 期间应用于视图。

tl;dr 我认为目前没有(官方)方法可以做你想做的事。

编辑:当然,这不会阻止您做您正在做的事情。使用 didSet 一切都会按预期工作。您只是不会在 IB 中获得即时响应。