自己總結的自定義控件注意事項:
- 確定從UIView派生還是UIControl派生
如果需要交互,那么一般是從UIControl派生;如果只是用于顯示,那么可以從UIView來派生。 - 仔細設計控件的API,為每個屬性和方法寫好注釋。
- 處理觸摸時,如果父類是UIView,那么處理touchesBegan等類似方法,否則處理beginTracking之類的方法。
- 考慮加一個屬性,控制是否會連續的報告事件。例如UISlider的continuous屬性。
- 提供initWithFrame:和initWithCoder:兩個方法,這樣即可以用代碼創建控件,也可以從IB中創建。
- 需要override layoutSubviews這個方法,來處理需要重新布局的情況。
- 控件可以提供接受UIImage類型的對象的API,但是實現細節上不要依賴于圖片資源,如果一個控件是純代碼實現的,那么非常容易提供給別人,或別的項目使用。在實現上,可以使用CALayer, CAShapeLayer, Core Graphics這些技術。
- 為控件的一些屬性提供合適的缺省值。