15

是否可以配置@IBInspectable属性在属性检查器中的显示和/或控制方式?例如,我有一个CGFloat属性“Overlay Alpha”,它显示在检查器中,如下所示:

在此处输入图像描述

问题是调节器上/下箭头仅以整数 (+/- 1) 步长更新。我希望它们以小步骤更新,例如 +/- 0.05 增量。有没有办法做到这一点?

控件的其他属性如何?您可以显示滑块CGFloat而不是数字字段吗?你能添加一个工具提示吗?您可以添加静态描述性文本吗?

只是想知道我可以自定义多少显示。我想看看我可以将 IBDesignable 功能推到多远,使 IB 成为真正的 UI 设计工具。

4

1 回答 1

1

问题是调节器上/下箭头仅以整数 (+/- 1) 步长更新。我希望它们以小步骤更新,例如 +/- 0.05 增量。有没有办法做到这一点?

缺乏任何解释如何做到这一点的文档以及您的问题已经存在 3 年以上的事实表明您实际上无法更改步进器在 IB 中可检查属性的增量值。

但是,您可以做的是根据您要调整的属性创建另一个属性,并缩放该属性,使 1 的增量对应于您想要的大小的步长。例如,设计师可能习惯于以百分比来考虑不透明度,因此您可以alphaPercent使用 getter 和 setter 创建一个属性,将alpha属性放大 100:

@IBInspectable var alphaPercent : CGFloat {
    get {
        return self.alpha * 100
    }
    set(percentage) {
        self.alpha = percentage / 100
    }
}

如果您将该属性添加到@IBDesignable视图,您将能够使用步进器在每次单击时将视图的不透明度更改 1%。

控件的其他属性如何?您可以显示 CGFloat 的滑块而不是数字字段吗?你能添加一个工具提示吗?您可以添加静态描述性文本吗?

目前这些都不可能。如果您长期需要技术较少的用户来调整用户界面(例如,如果您为许多不同的客户设计相同的基本应用程序),那么构建一个提供编辑模式。查看Facebook 的 Tweaks 框架可能会给您一些想法。

于 2018-02-12T18:24:47.023 回答