自己总结的自定义控件注意事项:
- 确定从UIView派生还是UIControl派生
如果需要交互,那么一般是从UIControl派生;如果只是用于显示,那么可以从UIView来派生。 - 仔细设计控件的API,为每个属性和方法写好注释。
- 处理触摸时,如果父类是UIView,那么处理touchesBegan等类似方法,否则处理beginTracking之类的方法。
- 考虑加一个属性,控制是否会连续的报告事件。例如UISlider的continuous属性。
- 提供initWithFrame:和initWithCoder:两个方法,这样即可以用代码创建控件,也可以从IB中创建。
- 需要override layoutSubviews这个方法,来处理需要重新布局的情况。
- 控件可以提供接受UIImage类型的对象的API,但是实现细节上不要依赖于图片资源,如果一个控件是纯代码实现的,那么非常容易提供给别人,或别的项目使用。在实现上,可以使用CALayer, CAShapeLayer, Core Graphics这些技术。
- 为控件的一些属性提供合适的缺省值。