配置@IBInspectable属性检查器控件

15
有没有可能配置如何在Attribute Inspector中显示和/或控制@IBInspectable属性?例如,我有一个CGFloat类型的属性“叠加Alpha”,它在属性检查器中显示如下所示: enter image description here 问题是,调整器上下箭头只以整数(+/-1)步长更新。我希望它们能以小步长更新,比如+/-0.05的增量。有没有办法这样做?
其他控件的属性怎么样?你能为一个CGFloat类型的属性显示滑块而不是数字字段吗?你能添加工具提示吗?你能添加静态描述文本吗?
想知道我可以如何自定义显示。我正在尝试将IBDesignable功能推入使IB成为实际UI设计工具的极限。

1
不,我从来没有这样做过... - Anna Dickinson
太遗憾了,还是谢谢您的发布! - epologee
1
你看过使用不同类型(例如doublelongfloatNSInteger等)是否有影响吗? - Sam Spencer
1
似乎在Xcode中无法实现这一点(尚未)。无论您使用@IBInspectable进行何种“类型舞蹈”,Xcode始终会将其呈现为默认控件(例如,UIColor的颜色选择器,基于数字的类型的值调整器等)。 但是,如果您直接在字段中键入十进制值,会发生什么?(在设置NSLayoutConstraint.constant时有效)。一些参考资料由@Nate Cook和其他人提供: https://gist.github.com/natecook1000/4269059121ec247fbb90, https://medium.com/anantha-krishnan-k-g/ibdesignable-and-ibinspectable-in-swift-3-702d7dd00ca - Vexy
是的,看起来苹果没有改进这个功能。我认为自几年前引入以来它根本没有改变。就工作流而言,我已经放弃了使用IBDesignable的方式,就像我在原始问题中描述的那样。我偶尔会用它来微调一些东西的外观。但是,完成后我会注释掉@IBDesignable指令。它不可靠,实现起来很费时间,并且会严重拖慢Xcode的速度。 - Anna Dickinson
显示剩余2条评论
1个回答

1
问题在于调整器的上下箭头只能在整数(+/- 1)步骤中更新。我希望它们能够以小步骤更新,比如+/-0.05增量。有没有办法做到这一点?
缺乏任何说明如何执行此操作的文档,以及您提出的问题已经三年以上的事实表明,您实际上无法更改IB中可检查属性的步进值。
然而,您可以基于要调整的属性创建另一个属性,并对其进行缩放,使增量为1对应您想要的步长。例如,设计人员可能习惯于按百分比思考不透明度,因此您可以创建一个名为alphaPercent的属性,该属性具有可获取器和设置器,将alpha属性增加100倍。
@IBInspectable var alphaPercent : CGFloat {
    get {
        return self.alpha * 100
    }
    set(percentage) {
        self.alpha = percentage / 100
    }
}

如果您将该属性添加到一个@IBDesignable视图中,您将能够使用步进器每次单击更改视图的不透明度1%。
其他控件的属性怎么样?您可以显示CGFloat的滑块而不是数字字段吗?您可以添加工具提示吗?您可以添加静态描述性文本吗?
目前都不可能。如果您长期需要非技术用户进行用户界面调整(例如,如果您正在为许多不同客户制作相同的基本应用程序),那么构建一个提供编辑模式的应用程序版本可能是有意义的。查看Facebook的Tweaks框架可能会给您一些想法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接