UIViewControllerが多数あるiOS9 +/Swift 3アプリケーションの場合、同じ背景色やその他の一般的な属性(フォント、スペーシングなど)を継承するベストプラクティス方法は何ですか?共通の基底クラスを持つのが最善でしょうか?あるいは何らかのプロトコルですか?多くのUIViewControllerの背景色と他の属性を継承します
答えて
ほとんどの視覚的属性は特定のUIViewとUIViewサブクラス(UILabel、UIButtonなど)に関連付けられているため、UIViewControllerレベルでこれを処理すると、ビューコントローラが非常に多くの詳細を担当するようになります他のクラスに
UIAppearance APIは、さまざまなビューでグローバルな視覚的属性を設定するためのAppleの組み込みメカニズムです。 good overview of that on NSHipster
UIAppearanceを使用することの欠点は、一部のボタンが赤色で、一部のボタンが青色であるように、スタイリングのバリエーションに容易に対応できないことです。これは基本的に、アプリ全体の特定のビューのすべてのインスタンスの固定デフォルトの外観です。
個人的には、定義済みスタイルの組み合わせをビューに適用できる専用スタイリングフレームワークを使用することをお勧めします。 I have written about thisと、frameworkを作成して、UIKitコンポーネントのスタイルを作成し、ストーリーボード内でそれらを適用してプレビューすることを容易にしました。
構成可能&再利用可能なスタイルを定義する別のアプローチ、あなたの場合興味があります:[StyleSheet](https://github.com/werediver/StyleSheet)。 – werediver
UI定数を持つ定数ファイルを使用できます。すべてのビューコントローラでこれらの変数を参照するだけで、変更が必要な場合は他のすべてが変更されます。
特定のものの拡張子を付けることもできます。私は通常、カラーを返すUIColorの拡張を持っています。拡張でそれを変更することができ、それはどこにでも変更されます。
extension UIColor{
class func selectedBlue() -> UIColor {
return UIColor(red:0.25, green:0.58, blue:0.97, alpha:1)
}
}
あなたはあなたのビューの背景色を設定するための所望の成分の例えばのための共通の基底クラスを持つことができ、サブクラスはその名前がBackgroundViewも聞かせて作成します。
class UHBView: UIView {
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor.blueColor(); //Any color you want
}
}
は今すぐすべてのビューのためにInterface Builderでアイデンティティインスペクタでカスタムクラスとして、このサブクラスを設定します。
これはランタイム属性のようですが、私はプロトコルがSwiftの継承よりも優れているという印象を受けていますが、私は本当に分かりません。 –
- 1. 背景色を継承する
- 2. 継承と属性の値
- 3. JavaFX CSS:他のCSS設定から背景色を継承するには?
- 4. テーブル行の背景色属性(jQuery)
- 5. UIViewControllerと継承
- 6. テーマの背景を継承するトースト
- 7. IE 6,7は背景色をサポートしています:継承; CSSのために?
- 8. クラス属性の継承(Python)
- 9. 背景のUIViewController
- 10. チー::継承属性
- 11. JSの多相性と深い継承
- 12. Java多形性と継承の問題
- 13. UIViewControllerクラスとXIBを継承
- 14. CSSの背景属性
- 15. サイズ属性を選択して、クロムの背景色とフォント色を選択してください
- 16. 多くの教義と多くの教義を継承しています
- 17. Openpyxl:背景色を行と列に設定します。属性エラー
- 18. UIViewControllerからグループ化されたテーブルへの背景の背景色
- 19. 継承された属性
- 20. JPA深継承アノテーション属性
- 21. 属性を持つJSオブジェクトの継承
- 22. コンソールアプリケーションの背景色と前景色を設定しますか?
- 23. プレースオートプレイトフラグメントの前景色と背景色を変更します
- 24. Pythonのクラス - 属性の継承
- 25. Pythonの継承、属性のエラー
- 26. Pythonのクラス属性の継承
- 27. 背景色SASSの他の行
- 28. カスタム属性は継承のない他の属性を暗示できますか?
- 29. C++多態性 - 継承クラスのマップ
- 30. 背景グラデーションの色と背景イメージDRYly
「あなたの質問は、書籍全体で答え、または持っていることができれば**多くの有効な答えが**、それはおそらく私たちのフォーマットの範囲が広すぎるのです」 – ZGski