設計Exam View
ExamのUI実装
要求
デルの実施方法
既存の方法ですべての画面にストーリーボードを作成し、コードを加えて完成しようとします.
に質問
これまでのやり方で進められてきた、ずっと感じていた問題が、今回の実施でさらに深刻になってきたと感じました.
ずっと感じていた問題は、コード、UI、ビューコントローラの過剰な重複です.
また、ストーリーボードから抜け出す考えも生まれました.
3つのニーズは、似たようなフレームワーク、似たような機能を持っています.
まったく同じ機能もたくさんあるので、できるだけ繰り返さないようにしたいと思います.
改善された方法-1
UIで最も簡単な共通要素は何ですか?
上端
UINavigationBar
下の前の質問、次の質問ボタン
ExamRootViewController
において達成され得る.3つの要件のビューコントローラは
ExamRootViewController
を継承しています.これで、基本フレームワークが手配されます.
1の問題
単純UIの共通点はそうですが、これらの共通点以外に、どんな類似点がありますか?
各ビューにレイアウトコンストレイントを追加する場合は、[前の問題](Previous Problems)ボタンと[次の問題](Next Problems)ボタンをクリックします.
アニメはどうやって?アニメーションをどのように切り替えませんか?
改善された方法-2
これを
ContainerView
と呼び、プロトコルとして定義します.enum ExamType { case create, take, history }
protocol ContainerView: UIView { ... }
class CreateQuestionContainerView: UIView, ContainerView { ... }
class TakeExamContainerView: UIView, ContainerView { ... }
class ExamHistoryContainerView: UIView, ContainerView { ... }
さらに、ExamType
およびQuestion
も受信し、対応するContainerView
に戻ります.ContainerViewFactory
が定義されています.class ContainerViewFactory {
public static func getContainerView(of type: ExamType, question: Question?) -> ContainerView {
...
}
}
したがって、ContainerView
を使用する人にとっては、ExamType
およびQuestion
が投げ出される限りである.対応する
ContainerView
が得られた.得られたビューでアニメーションを実現でき、変換が非常に便利です.
Reference
この問題について(設計Exam View), 我々は、より多くの情報をここで見つけました https://velog.io/@yy0867/Exam-View-설계テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol