简单的问题。有谁知道为什么Interface Builder不允许在UI元素上应用自定义样式?为什么只能以编程方式执行此操作?
我可以看到自定义UIView子类可能有多难,但默认控件肯定只有IB中可用的样式选项的一小部分,例如背景颜色或更改字体颜色。为什么会这样?有没有办法通过IB来处理像应用主题这样的概念?
答案 0 :(得分:4)
我个人的感觉是Apple做得对。它们提供适合HIG的元素和样式。如果他们开始添加其他元素/样式,那么从哪里开始,他们在哪里画线?
此外,它不像Apple主动阻止使用自定义元素/样式,它们只是不包含在工具集中。
我们最不需要的是一个充满膨胀的工具集。
答案 1 :(得分:3)
你真的要向Apple询问为什么。我猜测这是促进标准界面元素的一致使用和有限的开发资源的一些组合。
当然,您可以使用IB中标准接口元素的自定义子类来构建接口。这是一个更多的工作,因为你必须改变从UIButton添加到MyGreenButton或其他任何对象的每个对象的类型,但这并不困难。
也不难想象想出一个可以连接到所有控件的控制器类,以及以某种一致的,类似主题的方式自定义它们的外观。将一个实例添加到每个nib,连接所有控件,并让它做到这一点。当然,在你真正运行应用程序之前,你不会看到效果,但听起来你正在谈论自定义颜色和字体而不是大小。
答案 2 :(得分:1)
不幸的是,你受到了全能的Apple Deity的支配.....在他们的脚下鞠躬并感谢你拥有他们给你的东西.....大声笑......
说真的。 Apple提出了苹果想要的东西,你可以要求增加,但IB在功能方面是相当小的。
我认为这可能是设计上的。不知何故,优雅的简约?
程序员可以自定义控件,但我认为他们希望控件标准化。我只是不知道为什么他们没有在可用的控件中提供更多种类。就像ios设备的更多按钮样式......
如果你发现其他情况,我肯定会全力以赴。
答案 3 :(得分:0)
我认为苹果应该让你自定义更多的控件,对于游戏来说,制作自定义控件需要花费太多时间(你可以在android中使它更快,因为你可以用xml配置它)
Btw PaintCode是为组件创建自己的样式的另一个选项,它将生成代码,但更像是界面构建器