Heute Morgen habe ich einen schönen Tweet von @jesse_squires gesehen:

# Schneller Tipp: Verwenden Sie didSet auf Ihren IBOutlets, um Ansichten zu konfigurieren, anstatt Code in viewDidLoad zu stopfen. Viel sauberer. Immer noch nur einmal angerufen.

– Jesse Squires (@jesse_squires) Juli 29, 2015

Einstellungen Farben, Schriftarten und Zugänglichkeit für UI-Elemente in Apps ist immer in Schmerzen. Idealerweise würde dies im Storyboard passieren, aber das Farbmanagement im Storyboard ist ziemlich schrecklich (eine Möglichkeit, dies zu mildern, ist eine Xcode-Farbpalette), und erweiterte Eingabehilfen können nicht einmal im Storyboard ausgeführt werden.

Ich persönlich bevorzuge es also, dies im Code zu tun – viel einfacher zu sehen, wo alle Änderungen an Farben, Schriftart, Barrierefreiheit usw. vorgenommen werden müssen, wenn die App neu gestaltet wird. Ich sehe dies oft in eine super lange viewDidLoad übersetzt, wie Jesse erwähnt, die ich versuche, in einer oder mehreren Funktionen in der privaten Erweiterung in Swift wie folgt zu extrahieren:

Schnell

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

import UIKit
Klasse ViewController: UIViewController {
@IBOutlet } var myLabel: UILabel!
@IBOutlet schwach var myOtherLabel: UILabel!
@IBOutlet schwach var myButton: UIButton!
überschreiben Sie func viewDidLoad() {
super.viewDidLoad()
// extrahieren Sie dies in eine private Funktion
// um viewDidLoad kurz zu halten
configureStyling()
}
}
// MARKIERUNG: UI-Styling
private Erweiterung ViewController {
func configureStyling() {
myLabel.textColor = UIColor.purpleColor()
myOtherLabel.textColor = UIColor.yellowColor()
myButton.tintColor = UIColor.magentaColor()
}
}

Aber ich liebe die Lesbarkeit und Einfachheit von Jesses Lösung:

Schnell

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

import UIKit
Klasse ViewController: UIViewController {
@IBOutlet } 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()
}
}

Zeit zum Refactoring!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.