vanmorgen zag ik een prachtige tweet van @ jesse_squires:

#Swift tip: Gebruik didSet op je IBOutlets om weergaven te configureren in plaats van code in viewDidLoad te proppen. Veel schoner. Ik heb nog maar één keer gebeld.

— Jesse Squires (@jesse_squires) juli 29, 2015

Instellingen kleuren, lettertypen en toegankelijkheid voor UI-elementen in apps is altijd in pijn. Idealiter zou dit gebeuren in het storyboard, maar kleurbeheer in het storyboard is vrij verschrikkelijk (een manier om dit te verzachten is door middel van een Xcode kleurenpalet), en meer geavanceerde toegankelijkheid dingen kunnen niet eens worden gedaan in het storyboard.

dus ik persoonlijk liever om dit te doen in code-veel gemakkelijker om te zien waar alle kleuren / font / toegankelijkheid / etc veranderingen moeten worden gemaakt wanneer de app is opnieuw ontworpen. Ik zie dit vaak vertaald in een super lange viewDidLoad als Jesse noemt, die ik probeer te extraheren in een of meer functies in private extensie in Swift als dit:

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

importeren UIKit
klasse ViewController: UIViewController {
@IBOutlet zwakke var myLabel: UILabel!
@iboutlet zwakke var myOtherLabel: UILabel!
@iboutlet zwakke var myButton: UIButton!
overschrijven func viewDidLoad () {
super.viewdiload()
// pak dit uit in een privé-functie
/ / om viewDidLoad kort te houden
configureren()
}
}
// MARK: UI Styling
private extension ViewController {
func configureStyling () {
myLabel.textColor = UIColor.purpleColor ()
myOtherLabel.textColor = UIColor.yellowColor ()
myButton.kleur = UIColor.magentaColor()
}
}

maar Ik hou echt van de leesbaarheid en eenvoud van Jesse ‘ s oplossing:

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

importeren UIKit
klasse ViewController: UIViewController {
@IBOutlet zwakke 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.viewdiload()
}
}

tijd voor refactor!

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.