Esta manhã eu vi um lindo tweet do @jesse_squires:

#Swift dica: Use didSet no seu IBOutlets para configurar modos de exibição em vez de socar código em viewDidLoad. Muito mais limpo. Ainda chamado apenas uma vez.

— Jesse Squires (@jesse_squires) julho 29, 2015

configurações de cores, fontes e acessibilidade para elementos de interface do usuário em aplicativos está sempre com dor. Idealmente, isso aconteceria no storyboard, mas o gerenciamento de cores no storyboard é muito horrível (uma maneira de mitigar isso é por meio de uma paleta de cores Xcode), e coisas de acessibilidade mais avançadas nem podem ser feitas no storyboard.

eu, pessoalmente, prefiro fazer isso no código muito mais fácil de ver onde todas as cores / fonte / acessibilidade / etc mudanças precisam ser feitas quando o aplicativo é re-projetado. Muitas vezes vejo isso traduzido em um viewDidLoad super longo como Jesse menciona, que tento extrair em uma ou mais funções na extensão privada em Swift como esta:

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

importação UIKit
classe ViewController: UIViewController {
@IBOutlet fraco var myLabel: UILabel!
@IBOutlet weak var myOtherLabel: UILabel!
@IBOutlet weak var myButton: UIButton! Como baixar e instalar Minecraft 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.viewDidLoad()
// extrair esta uma função particular
// para manter viewDidLoad curto
configureStyling()
}
}
// MARCA: INTERFACE de usuário Estilo
extensão privada ViewController {
func configureStyling() {
myLabel.textColor = UIColor . purpleColor ()
myOtherLabel.textColor = UIColor . yellowColor ()
myButton.tintColor = UIColor . magentaColor()
}
}

Mas eu realmente amo a legibilidade e simplicidade de Jesse solução:

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

importação UIKit
classe ViewController: UIViewController {
@IBOutlet fraco 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()
}
}

Tempo para refatorar!

Deixe uma resposta

O seu endereço de email não será publicado.