我做了这个精彩的教程:面向开发人员的 Photoshop 教程:创建自定义 UISlider并提出了两个问题:
上面的示例使每个UISlider 都自定义。您可以只继承 UISlider 并调整此代码以使其成为可以调用的自己的类吗?
此外,您能否在 Interface Builder 的对象资源管理器中提供此自定义控件,以便您可以像 UIKit 中的其他任何内容一样将其拖放到您的视图中?
我做了这个精彩的教程:面向开发人员的 Photoshop 教程:创建自定义 UISlider并提出了两个问题:
上面的示例使每个UISlider 都自定义。您可以只继承 UISlider 并调整此代码以使其成为可以调用的自己的类吗?
此外,您能否在 Interface Builder 的对象资源管理器中提供此自定义控件,以便您可以像 UIKit 中的其他任何内容一样将其拖放到您的视图中?
CocoaTouch 类的文档通常会指出一个类是否不是为子类而设计的。对于 UISlider,还有一些自定义外观的说明。
Interface Builder 中的自定义组件
要在 Interface Builder 中使用自定义组件,必须使用“对象”组件,并为自定义类指定类类型。不幸的是,这不会呈现任何视觉队列,例如核心 UIKit 类。
你自己的插件
提供一个插件来调整 Xcode 是可能的,但是这不是一件小事,因为没有官方文档,所以有必要在 GitHub 等上搜索开源插件并研究代码。即使这样,该插件也可能会与 Xcode 的后续版本中断。
推荐方法
Interface Builder 是一项了不起的技术,但是对于更复杂的应用程序,我建议在代码中实现视图(在 VC 中覆盖 loadView)。这里有一些原因:
促进更好的封装和重用。您可以使用 UIKit 组件组合自己的组件(例如组合与继承),并为它们提供自定义的 OO 接口。将此与视图控制器中的大量 IB 插座进行对比,这会导致重用性差。
Fat-controllers 并不真正尊重 MVC 范式。
更加灵活流畅。并非所有属性都通过 IB 公开,因此在复杂情况下,很难知道在哪里查看。是 IB 还是代码中的设置?例如,自定义字体。
Xibs 在多人团队中合并确实很棘手。