今朝、@jesse_squiresからの美しいツイートを見ました:

#Swiftのヒント:コードをviewDidLoadに詰め込むのではなく、IBOutletsでdidSetを使用してビューを設定します。 はるかにクリーン。 まだ一度だけ呼び出されます。

—Jesse Squires(@jesse_squires)July29, 2015

設定アプリ内のUI要素の色、フォント、およびアクセシビリティは常に苦痛です。 理想的には、これはストーリーボードで起こるでしょうが、ストーリーボードの色管理はかなり恐ろしいです(これを軽減する1つの方法はXcodeカラーパレットを介

だから私は個人的にコードでこれを行うことを好む–アプリが再設計されたときにすべての色/フォント/アクセシビリティ/などの変更を行う必要があ Jesseが言及しているように、これが超長いviewDidLoadに翻訳されているのをよく見ます。:

スウィフト

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

インポートUIKit
クラスViewController:UIViewController{
@IBOutlet weak var myLabel:UILabel!
@IBOutlet weak var myOtherLabel:UILabel!
@IBOutlet weak var myButton:UIButton!
override func viewDidLoad(){
super.viewDidLoad()
// これをプライベート関数
//に抽出して、viewDidLoadを短くします
configureStyling()
}
}
// マーク:UIスタイリング
プライベート拡張ViewController{
func configureStyling(){
myLabel.textColor=UIColor.purpleColor()
myOtherLabel.textColor=UIColor.yellowColor()
myButton.tintColor=UIColor.マゼンタカラー()
}
}

しかし、私は本当にJesseの解決策の読みやすさとシンプルさが大好きです:

スウィフト

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

インポートUIKit
クラスViewController:UIViewController{
@IBOutlet weak var myLabel:UILabel! {
didSet {
myLabel.textColor = UIColor.purpleColor()
}
}
@IBOutlet weak var myOtherLabel: UILabel! {
didSet {
myOtherLabel.textColor = UIColor.yellowColor()
}
}
@IBOutlet weak var myButton: UIButton! {
didSet {
myButton.tintColor = UIColor.magentaColor()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
}

リファクタリングする時間!

コメントを残す

メールアドレスが公開されることはありません。