I morges så jeg en vakker tweet fra @ jesse_squires:

#Swift tips: Bruk didSet På IBOutlets å konfigurere visninger i stedet for stapper kode i viewDidLoad. Mye renere. Fortsatt kalt bare en gang.

— Jesse Squires (@jesse_squires) juli 29, 2015

innstillinger farger, skrifter og tilgjengelighet FOR UI-elementer i apper er alltid i smerte. Ideelt sett ville dette skje i storyboardet, men fargestyring i storyboardet er ganske fryktelig (en måte å redusere dette på er gjennom En Xcode Fargepalett), og mer avanserte tilgjengelighetsartikler kan ikke engang gjøres i storyboardet.

så jeg personlig foretrekker å gjøre dette i kode-mye lettere å se hvor alle farger / font / tilgjengelighet / etc endringer må gjøres når appen er re-designet. Jeg ser ofte dette oversatt til en super lang viewDidLoad som Jesse nevner, som jeg prøver å trekke ut i en eller flere funksjoner i private extension I Swift som dette:

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

import UIKit
klasse ViewController: UIViewController {
@IBOutlet svak var myLabel: UILabel!
@ IBOutlet svak var myOtherLabel: UILabel!
@ IBOutlet svak var myButton: UIButton!
overstyr func viewDidLoad () {
super.viewDidLoad()
// pakk dette inn i en privat funksjon
/ / å holde viewDidLoad kort
configureStyling()
}
}
// MERK: UI Styling
privat utvidelse ViewController {
func configureStyling () {
myLabel.textColor = UIColor.purpleColor()
myOtherLabel.textColor = UIColor.yellowColor ()
myButton.tintColor = UIColor.magentaColor()
}
}

Men jeg elsker virkelig lesbarheten og enkelheten Til Jesses løsning:

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

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

Tid til å refactor!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.