Esta mañana vi un hermoso tweet de @jesse_squires:

#Consejo rápido: Utilice didSet en sus IBOutlets para configurar vistas en lugar de abarrotar código en viewDidLoad. Mucho más limpio. Aún así, sólo llamó una vez.

Los colores de configuración, las fuentes y la accesibilidad para los elementos de la interfaz de usuario de las aplicaciones siempre son dolorosos. Idealmente, esto sucedería en el guion gráfico, pero la administración del color en el guion gráfico es bastante horrible (una forma de mitigar esto es a través de una paleta de colores Xcode), y las cosas de accesibilidad más avanzadas ni siquiera se pueden hacer en el guion gráfico.

Así que personalmente prefiero hacer esto en código: es mucho más fácil ver dónde se deben realizar todos los cambios de colores / fuente / accesibilidad / etc cuando se rediseña la aplicación. A menudo veo esto traducido en una carga de visualización súper larga como menciona Jesse, que intento extraer en una o más funciones en extensión privada en 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

importación de UIKit
clase ViewController: UIViewController {
@IBOutlet débil var myLabel: UILabel!
@IBOutlet weak var myOtherLabel: UILabel!
@IBOutlet débil var mi botón: UIButton!
anular func viewDidLoad () {
super.viewDidLoad()
// el extracto de esta en una función privada
// para mantener viewDidLoad corto
configureStyling()
}
}
// MARCA: Estilo de interfaz de usuario
extensión privada ViewController {
func configureStyling() {
myLabel.textColor = UIColor.purpleColor ()
mioetiqueta.textColor = UIColor.yellowColor ()
Mi botón.tintColor = UIColor.magentaColor()
}
}

Pero me encanta la legibilidad y simplicidad de Jesse solución:

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

importación de UIKit
clase ViewController: UIViewController {
@IBOutlet débil 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()
}
}

Hora de refactorizar!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.