È possibile creare un protocollo ed estenderlo.
Qualcosa di simile:
protocol Animations {
func animateHidden(flag: Bool)
}
extension Animations {
func animateHidden(flag: Bool) {
// some code
}
}
extension UILabel: Animations {}
extension UIImageView: Animations {}
vostro metodo sarà disponibile per le classi estesi:
let l = UILabel()
l.animateHidden(false)
let i = UIImageView()
i.animateHidden(false)
in un commento, hai chiesto: "in questo caso come chiamare self
per UILabel
e UIImageView
nella funzione animateHidden
? ". Lo fai vincolando l'estensione.
Esempio con una clausola where
:
extension Animations where Self: UIView {
func animateHidden(flag: Bool) {
self.hidden = flag
}
}
Grazie a @ Knight0fDragon per il suo ottimo commento sulla clausola di where
.
Si può semplicemente usare 'estensione UIView'? Dipenderà dall'implementazione di 'animateHidden' – Kevin
@Kevin tutto il codice di' animateHidden' sarà utile per entrambe le classi 'UILabel',' UIImageView' – Danny