【问题标题】:How do you display custom UIViews in InterfaceBuilder?如何在 Interface Builder 中显示自定义 UIView?
【发布时间】:2010-10-04 10:01:00
【问题描述】:

我似乎喜欢设计新的 UIViewsUIControls 来实现他们自己的 -drawRect: 方法。这对我很有效,尤其是在 Interface Builder 中使用 UIViews 编写时。

但是在 Interface Builder 中组合它们很烦人,因为它们只是显示为无聊的普通矩形。

如果视图真的能像内置控件那样呈现自己,那就太好了。

有什么方法可以构建我的项目,以便 Interface Builder 呈现我的自定义视图?

【问题讨论】:

    标签: objective-c xcode interface-builder ibplugin


    【解决方案1】:

    为此,您实际上必须为使用您的自定义类的 Interface Builder 创建一个插件。创建并安装插件后,您将能够像任何其他控件一样将类的实例(您的视图)拖放到另一个窗口/视图/任何东西上。要开始创建 IB 插件,请参阅Interface Builder Plug-In Programming Guide。另外,我建议您看看 Aaron Hillegass 的书,Cocoa Programming for Mac OS X。除了写得很好且易于理解之外,它还有一章介绍如何创建您自己的 IB Palette 控件。

    【讨论】:

    • 只是对 2012 年及以上到达此帖子的人的评论:Xcode 4 不再支持 IB 插件。你运气不好。
    • 感谢@RandyMarsh 为我节省了 30-60 分钟 :)
    • @EgeAkpinar 不客气。 :-) 我很抱歉你不得不继续为你的问题寻找一个不优雅的解决方案,不管它可能是什么。 :-p
    • 我也找不到在线版的索引和我的副本有什么区别。你确定那本书里有吗?顺便说一句,Apple 的 IB Plug-in Programming Guide 的链接已失效。
    • 明确一点:使用 Xcode 4+ 和故事板这不可能吗?
    【解决方案2】:

    这可以通过使用@IBDesignable 标记您的 UIView 子类来实现。完成此操作后,您的自定义视图将在 Interface Builder 中呈现自己。您甚至可以通过将参数标记为@IBInspectable 来添加可以配置的参数。这是一个 Swift 示例:

    @IBDesignable class customView: UIView {
    
        @IBInspectable var count: Int = 0
    
    }
    

    article on NSHipster 提供了更多详细信息。

    【讨论】:

    • 使用上述方法我们无法在对象库中添加自定义视图。
    • @ManiaChamp,你是对的,但问题并没有询问将视图添加到对象库中的问题。
    • 这个问题链接到另一个询问如何在对象库中添加自定义视图的问题 - 所以我们很多人都来这里寻找那个。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多