【问题标题】:How to reflect changes from other property to a property in Interface Builder如何在 Interface Builder 中反映从其他属性到属性的更改
【发布时间】:2017-04-06 09:23:06
【问题描述】:

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

如果您在 Interface Builder 中查看 UISlider:

你可以看到如果我把它的Value改成大于它的MaximumMaximum会在Interface Builder中自动更新它的值。

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

提前致谢!

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

当前结果:

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

【问题讨论】:

  • didSet { 然后更新值?
  • 恐怕 didSet 在运行时稍后被调用,而不是在你在 IB 中更改它的那一刻
  • 谢谢大家。我在我的问题中添加了更多信息。

标签: swift xcode interface-builder


【解决方案1】:

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

@IBInspectable 目前(Xcode8.3)只是一个更好的方式来设置“用户定义的运行时属性”。这些属性在使用 KVC 加载 NIB 期间应用于视图。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 2021-11-25
    • 2017-08-05
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多