【问题标题】:How to add custom controls in Interface Builder (Xcode)如何在 Interface Builder (Xcode) 中添加自定义控件
【发布时间】:2014-03-31 12:44:23
【问题描述】:

所以我创建了一个继承自 UIView 的自定义控件,我想在 Interface Builder 中使用它。我知道我可以添加一个 UIView 并将其类名设置为我的自定义控件类名,但它只出现在运行时;在界面生成器中,它只是一个普通的 UIView。我想在界面生成器中处理 UI 时查看控件。

谢谢

【问题讨论】:

  • 那是因为 Interface Builder 实际上并没有运行您的代码。所以你将看到的只是简单的UIView
  • 有一些机制可以为 NSView(OSX 视图)执行此操作,但由于 OSX 从根本上不支持 UIView,因此它们不适用于 iOS 视图。不幸的是,您只需要使用模拟器即可。

标签: ios objective-c xcode user-interface uiview


【解决方案1】:

Xcode 6 添加了一种对放置和预览自定义控件的支持。请参阅 Apple 官方文档“创建在界面生成器中呈现的自定义视图”:https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/chapters/CreatingaLiveViewofaCustomObject.html

【讨论】:

    【解决方案2】:

    简短的回答:你不能。 (2015 年 4 月 14 日更改:见末尾编辑)

    Xcode 3 曾经支持界面构建器插件,但他们在 Xcode 4 中删除了它,并且根据我的阅读,不会将其添加回来。

    您也看不到/查看自定义 UIView 子类的自定义出口/属性。

    但是有一种方法可以设置这些属性。您选择自定义视图对象,选择身份检查器,然后查找标题为“用户定义的运行时属性”的部分。您可以在此处将 KVC 键路径引用添加到视图的属性或子属性,尽管您可以指定的数据类型的数量是有限的。此外,如果键路径在运行时不是有效的 KVC 引用,您的程序将崩溃,并出现一个难以发现的神秘错误,即“对象 MyCustomView 不符合键 foo 的键值”。如果您忘记设置了用户定义的运行时属性,您可能需要花费数小时来找出错误的根源。

    编辑:(2015 年 4 月 14 日)

    在 Xcode 6 中,Apple 添加了一个新的 IBDesignable 属性,您可以将其添加到您的自定义 UIView 类(或 Mac OS 上的 NSView 类)中,让您可以在 IB 编辑器中直接显示视图。还有一个IBInspectable 属性,可让您从 IB 查看和编辑视图的某些属性。这就像我们自 Xcode 4.0 以来就有的“用户定义的运行时属性”选项,但更简洁,因为它向您显示了您可以更改的属性,而不是您必须键入 KVC 键,并且如果您有可能导致您的应用程序崩溃搞错了。但是,您只能指定数量非常有限的类型(字符串/本地化字符串、数字、颜色、布尔值、点、大小、矩形、范围、图像或 nil 值。)

    【讨论】:

    • 在支持这样的东西的同时扩展 IB 中的功能可能很困难。
    • @Gavin 我认为这与脆弱性有关。由于 IB 在其内部的插件中运行代码,因此格式不正确的插件会导致 IB 崩溃。
    • 然后删除它是有意义的。我敢肯定人们因为编写了糟糕的插件而遇到了各种各样的问题,Apple 可能因此收到了相当多的投诉。
    • 这个答案不再正确。请参阅下面 Scott 的回答。
    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-02-22
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多