Luego de mirar en diferentes repositorios y foros de internet al concluir descubrimos la solución que te compartiremos más adelante.
Solución:
Mi sugerencia es aprovechar las extensiones de Swift para que el código sea un poco más modular y fácil de usar. Por ejemplo, si desea hacer que varias etiquetas aparezcan o desaparezcan progresivamente o que una etiqueta aparezca o desaparezca gradualmente en varias vistas, tendrá que pasar los métodos animateWithDuration a todas partes, lo que puede ser una molestia. Una alternativa más limpia es crear un archivo llamado UIView.swift (nuestra extensión UIView). Agregue el siguiente código a este archivo:
import Foundation
extension UIView
func fadeIn(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: ((Bool) -> Void) = (finished: Bool) -> Void in)
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations:
self.alpha = 1.0
, completion: completion)
func fadeOut(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 3.0, completion: (Bool) -> Void = (finished: Bool) -> Void in)
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations:
self.alpha = 0.0
, completion: completion)
Ahora puede agregar la funcionalidad de entrada/salida gradual a cualquier elemento secundario de UIView (por ejemplo, UILabel, UIImage, etc.). Dentro de su función viewDidLoad(), puede agregar:
self.statusLabel.alpha = 0
self.statusLabel.text = "Sample Text Here"
self.myLabel.fadeIn(completion:
(finished: Bool) -> Void in
self.myLabel.fadeOut()
)
Ahora, puede usar este código de muestra para vistas de imágenes, etiquetas, vistas de texto, vistas de desplazamiento o cualquier elemento secundario de UIView también. Espero que esto ayude.
Aunque la vista se haya cargado, es posible que no sea visible para el usuario cuando viewDidLoad
se llama. Esto significa que puede encontrar que sus animaciones parecen haber comenzado cuando las presencia. Para superar este problema, querrá comenzar su animación en viewDidAppear
en cambio.
En cuanto a fadeIn
y fadeOut
funciones – no existen. Tendrás que escribirlos tú mismo. Afortunadamente, es muy fácil hacer esto. Algo como lo siguiente podría ser lo suficientemente bueno.
func fadeViewInThenOut(view : UIView, delay: NSTimeInterval)
let animationDuration = 0.25
// Fade in the view
UIView.animateWithDuration(animationDuration, animations: () -> Void in
view.alpha = 1
) (Bool) -> Void in
// After the animation completes, fade out the view after a delay
UIView.animateWithDuration(animationDuration, delay: delay, options: .CurveEaseInOut, animations: () -> Void in
view.alpha = 0
,
completion: nil)
Respuesta actualizada para Swift 3 – Usando extensión
extension UIView
func fadeIn(duration: TimeInterval = 1.0, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = (finished: Bool) -> Void in)
UIView.animate(withDuration: duration, delay: delay, options: UIViewAnimationOptions.curveEaseIn, animations:
self.alpha = 1.0
, completion: completion)
func fadeOut(duration: TimeInterval = 1.0, delay: TimeInterval = 3.0, completion: @escaping (Bool) -> Void = (finished: Bool) -> Void in)
UIView.animate(withDuration: duration, delay: delay, options: UIViewAnimationOptions.curveEaseIn, animations:
self.alpha = 0.0
, completion: completion)
Uso:
self.statusLabel.alpha = 0
self.statusLabel.text = "Sample Text Here"
self.myLabel.fadeIn(completion:
(finished: Bool) -> Void in
self.myLabel.fadeOut()
)
Reseñas y puntuaciones de la guía
Acuérdate de que te concedemos esclarecer si te fue de ayuda.