Ce matin j’ai vu un beau tweet de @jesse_squires:

# Conseil Swift: Utilisez didSet sur vos IBOutlets pour configurer des vues au lieu de charger du code dans viewDidLoad. Beaucoup plus propre. Encore appelé une seule fois.

— Jesse Squires (@jesse_squires) Juillet 29, 2015

Les paramètres de couleurs, de polices et d’accessibilité des éléments d’interface utilisateur dans les applications sont toujours difficiles. Idéalement, cela se produirait dans le storyboard, mais la gestion des couleurs dans le storyboard est assez horrible (une façon d’atténuer cela est via une palette de couleurs Xcode), et des choses d’accessibilité plus avancées ne peuvent même pas être faites dans le storyboard.

Donc, personnellement, je préfère le faire dans le code – beaucoup plus facile de voir où toutes les modifications de couleurs / polices / accessibilité / etc doivent être apportées lorsque l’application est repensée. Je vois souvent cela traduit en une super longue viewDidLoad comme le mentionne Jesse, que j’essaie d’extraire dans une ou plusieurs fonctions en extension privée dans Swift comme ceci:

Rapide

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

importer UIKit
class ViewController: UIViewController {
@IBOutlet var faible myLabel: UILabel!
@IBOutlet myOtherLabel var faible: UILabel!
@IBOutlet var faible myButton: UIButton!
remplacez func viewDidLoad() {
super.Voir le téléchargement()
// extrayez ceci dans une fonction privée
// pour garder viewDidLoad court
configureStyling()
}
}
// MARK: Style d’interface utilisateur
extension privée ViewController {
func configureStyling() {
myLabel.textColor = UIColor.Couleur pourpre()
myOtherLabel.textColor = UIColor.Couleur jaune()
Mon bouton.tintColor = UIColor.Magentacouleur()
}
}

Mais j’aime beaucoup la lisibilité et la simplicité de la solution de Jesse:

Rapide

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

importer UIKit
class ViewController: UIViewController {
@IBOutlet var faible 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.Voir le téléchargement()
}
}

Il est temps de refactoriser!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.