何时使用“UIControl”而不是“UIView”在 iOS 中实现自定义组件?

Omi*_*var 2 ios swift

我必须实现这样的组件:

在此输入图像描述

用户可以选择颜色,并且所选颜色由复选标记指示。问题是,对于这种组件,我必须使用UIControl, 或 吗UIView?哪一种更合理呢?为什么?

class MyComponent: UIControl {
  //...
}
Run Code Online (Sandbox Code Playgroud)

或者

class MyComponent: UIView {
  //...
}
Run Code Online (Sandbox Code Playgroud)

Eil*_*lon 7

UIControl实际上继承自UIView,并具有特定的附加功能。选择是否子类化UIControl取决于您是否需要它提供的特定额外功能。
提供的一些默认功能UIControl包括:

  • 支持目标操作机制,例如调用:
    myControl.addTarget(self, action: #selector(myFunc), for: .valueChanged)
  • stateisEnabledisSelected更多与 s 相关的属性UIControl
  • 默认界面生成器支持。
  • 无障碍目的

如果您需要或想要采用上述一些功能和行为,UIControl可能是一个好方法。否则,如果您不需要大部分功能,也许创建自定义UIView会更简单,默认情况下需要处理的事情更少。
另外,请注意,目标操作机制与基于 Objective-C 的回调选择器一起使用,这在当今被认为是一种旧的并且非常不快速,但显然仍然被 的UIKit按钮、滑块、文本字段和基本上所有其他基础使用用户界面元素。

您可以阅读Apple 文档UIControl中的更多信息,以了解其提供的功能。