【问题标题】:iOS Interface Builder Custom Styles?iOS 界面生成器自定义样式?
【发布时间】:2011-11-22 10:04:18
【问题描述】:

简单的问题。有谁知道为什么 Interface Builder 不允许在 UI 元素上应用自定义样式?为什么只能以编程方式执行此操作?

我知道这对于自定义 UIView 子类来说可能很困难,但默认控件肯定只有一小部分通过 IB 可用的样式选项,例如背景颜色或更改字体颜色。为什么会这样?有没有办法通过 IB 来处理应用程序主题之类的概念?

【问题讨论】:

  • 收藏和投票 + 因为如果其他人有其他意见或经验,我很感兴趣。
  • 嘿,我想做同样的事情——定义我自己的样式集并让 IB 实时从中提取——并认为我找到了一个很好的解决方案。我在stackoverflow.com/questions/32682764/… 整理了一份指南。

标签: ios interface-builder themes styles


【解决方案1】:

我个人的感觉是,Apple 做得对。它们提供适合 HIG 的元素和样式。如果他们开始添加其他元素/样式,那么从哪里开始,他们在哪里画线?

另外,Apple 并没有积极阻止使用自定义元素/样式,他们只是没有将其包含在工具集中。

我们最不需要的是一个充满膨胀的工具集。

【讨论】:

    【解决方案2】:

    您真的必须向 Apple 询问为什么。我猜测这是促进标准界面元素的一致使用和有限的开发资源的某种组合。

    当然,您可以使用 IB 中标准接口元素的自定义子类来构建接口。这需要更多的工作,因为您必须将添加的每个对象的类型从 UIButton 更改为 MyGreenButton 或其他,但这并不困难。

    不难想象,想出一个控制器类型的类,它可以连接到您的所有控件等等,以某种一致的、类似主题的方式自定义它们的外观。为每个笔尖添加一个实例,连接所有控件,然后让它完成。当然,在实际运行应用程序之前您不会看到效果,但听起来您是在谈论自定义颜色和字体而不是大小。

    【讨论】:

    • 我知道以编程方式绝对可以做到这一点,(顺便说一句。有类似 NSThemeController 的东西吗?)但我只是想知道为什么它不能通过 IB 以某种方式自动化是否有任何未知限制。
    • 旧版本的 IB 支持自定义类的插件,但 iOS 视图从未支持过,而且我认为 Xcode 4 中内置的 IB 目前不支持插件。我相信很多人都会喜欢这样。我怀疑是否有任何真正的技术限制会绝对阻止这样的事情,但实施这显然意味着不实施其他事情。不,没有 NSThemeController,但正如我上面所说的,你当然可以写一个。
    【解决方案3】:

    不幸的是,你受制于全能的苹果神……向他们的脚下鞠躬并感谢你拥有他们给你的东西……哈哈……

    说真的。 Apple 提供了 Apple 想要的内容,您可以请求添加,但 IB 在功能方面相当少。

    我认为这可能是设计使然。某种优雅的简约?

    为程序员提供了自定义控件的能力,但我认为他们希望控件标准化。我只是不知道为什么他们没有在可用的控件中提供更多的变化。喜欢 ios 设备的更多按钮样式...

    如果你发现不是这样,我肯定会全神贯注。

    【讨论】:

    • Strangley 不过,我认为如果他们想要标准化,他们会在 IB 中放置尽可能多的样式选项,而不是鼓励人们对程序化样式感到疯狂,我想说的是更多可能会引入图形不一致。或者更好的是,提供主题概念,以及获取一些预定义的“Apple 认可”主题的方法。
    • 但iOS按钮只有一种样式。而且看起来像垃圾。最常见的是,我会抓取一个看起来就像工具栏按钮的按钮图像,并使用我的按钮类型自定义将其拉伸为背景。导致一个带有 1px 边框的白色按钮......嗯,不是吗?我同意他们希望保持一致的观点,但是让它看起来“标准”似乎有点麻烦
    • @DarkAngel - 与其这样做,不如花一天时间编写一个 UIButton 子类,它可以完全按照您的意愿进行绘制。然后,您可以在所有项目中使用该类。
    • 我就是这么做的。但这通常与将按钮样式设置为自定义并根据需要进行图像背景有关。通常是看起来像其他 iOS 按钮的拉伸图像。真的有点痛
    【解决方案4】:

    我认为苹果应该让你自定义更多的控件,对于游戏来说,制作自定义控件需要太多时间(你可以在 android 中让它更快,因为你可以在 xml 中配置它)

    Btw PaintCode 是另一种为组件创建自己的样式的选项,它会生成代码,但它更像是界面构建器

    http://www.paintcodeapp.com/

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 2020-03-21
      • 2015-06-24
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多