Mi llamada se parece a esto:

UIView.transition(with: button, duration: 0.5,
                  options: .transitionCrossDissolve,
                  animations: { button.hidden = false },
                  completion: null)

Cuando lo uso para mostrar un botón, funciona como se esperaba con una buena aparición gradual. Cuando lo uso para ocultar (con button.hidden = true), nuevamente funciona bien en el simulador de iOS, pero en un dispositivo, iPhone o iPad, simplemente desaparece sin desvanecimiento.

La única diferencia significativa que puedo encontrar es que mis dispositivos ejecutan iOS 10.2, pero el simulador solo tiene 10.1. Xcode no me da la opción de descargar un simulador 10.2.

¿Hay algo más que pueda faltar? ¿Hay otras opciones de animación que deba usar?

Vale la pena señalar que el botón que estoy ocultando y mostrando está dentro de una UIBarButtonItem en una barra de navegación.

1
Uncommon 14 dic. 2016 a las 01:52

2 respuestas

La mejor respuesta

Como mi botón está en la barra de navegación, terminé usando navigationItem.setRightBarButtonItems(buttons, animated: true). Con eso, la animación funcionó desapareciendo y desapareciendo tanto en simuladores como en dispositivos.

0
Uncommon 15 dic. 2016 a las 18:54

Tuve el mismo problema, pero solo con una UIView estándar dentro de una UIView. Arreglé la mía pasando la supervista de la vista que estaba ocultando como el parámetro with:. Creo que volver a leer los documentos así es como se supone que debe hacerlo, y el hecho de que funcionó al pasar la vista en cuestión puede haber sido un error conveniente que Apple podría haber solucionado en 10.2, pero eso es solo una especulación.

De todos modos, reescribiendo el código del OP usando lo que hice para arreglar el mío para ilustrar:

UIView.transition(with: button.superview!, duration: 0.5,
                  options: .transitionCrossDissolve,
                  animations: { button.hidden = false },
                  completion: null)
1
daphtdazz 16 ene. 2017 a las 13:51