dnes ráno jsem viděl krásný tweet od @jesse_squires:

#rychlý tip: Použijte didSet na svých Iboutletech ke konfiguraci zobrazení namísto napěchování kódu do viewDidLoad. Mnohem čistší. Stále volal jen jednou.

– Jesse Squires (@jesse_squires) July 29, 2015

Nastavení barvy, písma, a Přístupnost pro prvky uživatelského rozhraní v aplikacích je vždy v bolesti. V ideálním případě by se to stalo ve storyboardu, ale správa barev ve storyboardu je docela hrozná (jedním ze způsobů, jak to zmírnit, je paleta barev Xcode) a pokročilejší věci přístupnosti nelze ani provést ve storyboardu.

takže já osobně dávám přednost tomu v kódu-mnohem snazší zjistit, kde je třeba provést všechny změny barev / písma / přístupnosti / atd., Když je aplikace znovu navržena. Často to vidím přeloženo do super dlouhého viewDidLoad, jak Jesse zmiňuje, které se snažím extrahovat do jedné nebo více funkcí v soukromém rozšíření v Swiftu, jako je tento:

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
třída ViewController: UIViewController {
@IBOutlet slabý var myLabel: UILabel!
@IBOutlet slabý var myOtherLabel: UILabel!
@IBOutlet slabý var myButton: UIButton!
přepsat func viewDidLoad () {
super.viewDidLoad()
// rozbalte to do soukromé funkce
/ / Chcete-li zachovat viewDidLoad krátký
configureStyling()
}
}
// značka: UI Styling
private extension ViewController {
func configureStyling () {
myLabel.textColor = UIColor.purpleColor ()
myOtherLabel.textColor = UIColor.žlutá barva ()
myButton.tintColor = UIColor.magentaColor()
}
}

ale opravdu miluji čitelnost a jednoduchost Jesseho řešení:

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
třída ViewController: UIViewController {
@IBOutlet slabý 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()
}
}

čas na refaktor!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.