Questa mattina ho visto un bellissimo tweet da @ jesse_squires:

#Suggerimento rapido: usa didSet sui tuoi IBOUTLET per configurare le viste invece di inserire il codice in viewDidLoad. Molto più pulito. Ancora chiamato solo una volta.

— Jesse Squires (@jesse_squires) Luglio 29, 2015

Impostazioni colori, font e accessibilità per gli elementi dell’interfaccia utente nelle app è sempre doloroso. Idealmente questo accadrebbe nello storyboard, ma la gestione del colore nello storyboard è piuttosto orribile (un modo per mitigarlo è attraverso una tavolozza di colori Xcode), e cose più avanzate di accessibilità non possono nemmeno essere fatte nello storyboard.

Quindi personalmente preferisco farlo in codice-molto più facile vedere dove devono essere apportate tutte le modifiche di colori / font / accessibilità / ecc quando l’app viene riprogettata. Vedo spesso questo tradotto in un viewDidLoad super lungo come Jesse menziona, che cerco di estrarre in una o più funzioni in estensione privata in Swift come questo:

Swift

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

importazione UIKit
classe ViewController: UIViewController {
@IBOutlet debole var myLabel: UILabel!
@ IBOutlet debole var myOtherLabel: UILabel!
@ IBOutlet debole var myButton: UIButton!
sostituisci func viewDidLoad () {
super.viewDidLoad()
// l’estratto di questo in una funzione privata
// per mantenere viewDidLoad breve
configureStyling()
}
}
// MARCHIO: UI Styling
estensione privata ViewController {
func configureStyling() {
myLabel.textColor = UIColor.purpleColor ()
myOtherLabel.textColor = UIColor.yellowColor ()
myButton.tintColor = UIColor.magentaColor()
}
}

Ma adoro la leggibilità e la semplicità della soluzione di Jesse:

Swift

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

importazione UIKit
classe ViewController: UIViewController {
@IBOutlet debole 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.Visualizzaricarica()
}
}

E ‘ ora di rifattorizzare!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.