以前のプロジェクトには多くのUIViewサブクラスがあることに気づきました。そのようなサブクラスの唯一の理由は、大きなビューをカスタムサブビューに分割し、そのサブビューのレイアウトとビューデリゲートプロトコルによるUIButtonsアクションの委任を提供することです。だから私はそれは正しいデザインですか?
UIViewサブクラスを作成する非常に一般的な理由は、ビューにコアグラフィックスを描画するためにdrawRectメソッドを指定できるようにするためです。別の理由としては、ジェスチャ認識機能に特化した特定のビュー領域内で何かを実行したい場合など、タッチデリゲートを実装することがあります。
オブジェクト(ビューなど)を論理グループに、場合によっては階層にパーティション化することは、変更やバグのスコープを分離するのに役立つため、通常は適切なコーディング手法と見なされます。
ビューが他のビューのコンテナーにすぎない場合は、通常の(サブクラス化されていない)UIViewを使用することをお勧めします。サブクラス化されたビューコントローラーからビューを作成(またはロードしてからnib)します。
例外:UIViewをサブクラス化する場合:
初期のiOSでは、ViewControllerはありませんでした。今日、ViewControllerを使用して実行できることのいくつかは、ビューによって行われました。あなたのビュークラスのいくつかはそのようなことをしているようです。
全体として、サブクラスが小さい場合、それはひどいコードのにおいではありません。サブクラスが乱雑になりすぎたら、新しいクラスを発芽させて、集約(MyController)と委任(MyViewDelegate)の責任を管理します。