Traducción: Tutorial de UIStackView para Swift 5 iOS: Introducción a la vista de pila

Descripción

Nota de actualización: Ehab Amer ha actualizado este tutorial para Swift 5, iOS 12 y Xcode 10. Jawwad Ahmad escribió el texto original.

¿Alguna vez ha necesitado agregar una vista desde una vista o eliminar una vista de una vista durante el tiempo de ejecución y ajustar el diseño de la vista junto a la vista? Tal vez ajustó algunas restricciones o utilizó una biblioteca de terceros para completar este trabajo. Tal vez no se esté ejecutando en tiempo de ejecución, pero desea agregar una nueva vista entre las otras vistas en el guión gráfico.

En estos casos, debe cambiar algunas restricciones. Puede encontrar que ha eliminado todas las restricciones en el área y luego las ha agregado nuevamente.

UIStackView simplifica tales tareas. Puede colocar fácilmente una serie de vistas en la vista de pila horizontal o verticalmente, y configurarlas de manera que las vistas se ajusten automáticamente al espacio disponible a través de atributos como alineación, distribución y espaciado. ¡Por favor, disfruta! :]

Nota: Este tutorial asume que básicamente está familiarizado con el diseño automático. Si no está familiarizado con AutoLayout , consulte el video tutorial " AutoLayout Start AutoLayout ".

empezando

Primero use este tutorial para descargar los materiales del proyecto . Utilice el simulador de iPhone 8 para crear y ejecutar el proyecto de inicio en Xcode. Verá lo siguiente:

Inserte la descripción de la imagen aquí
Esta es una aplicación para atracciones de vacaciones. Presenta una lista de lugares para deshacerse de todo. Antes de ir a ninguna parte, usará Stack Views para resolver algunos problemas con la aplicación.

Explore el resort

Vaya a la vista de información de Londres haciendo clic en Londres. A primera vista, la vista puede verse bien, pero existen algunos problemas:

  1. Mire la fila de botones en la parte inferior de la vista. Dado que el espacio entre ellos es fijo, no pueden ajustarse al ancho de la pantalla. Para resolver mejor el problema, presione Comando-Flecha izquierda para rotar el emulador a horizontal.
    Inserte la descripción de la imagen aquí
  2. Haga clic en "Ocultar" junto a "Clima". Esto ocultará el texto, pero no reposicionará la parte debajo de él, pero dejará un espacio en blanco.
    Inserte la descripción de la imagen aquí
  3. El orden de las secciones necesita mejorar. Sería más lógico, si ves lo que aparece después de visitar por qué, ubicar la parte del clima entre ellos.
  4. En el modo horizontal, la fila inferior de botones está demasiado cerca del borde inferior de la vista. Si reduce el espacio entre las partes, el efecto será mejor, pero solo en modo horizontal.

Ahora que conoces las mejoras que se harán, es el momento de ahondar en el proyecto. Abrir Main.storyboard. Se abrirá en la vista inicial del dispositivo. Asegúrese de que el iPhone 8 se muestre como dispositivo seleccionado.
Inserte la descripción de la imagen aquí
Esto no tiene ningún efecto en el tiempo de ejecución, pero puede ayudarlo a ver cómo se ve la pantalla en el dispositivo. Puede hacer clic en otro icono en cualquier momento para cambiar el dispositivo seleccionado. Pase el mouse sobre el ícono para mostrar su dispositivo correspondiente.
Inserte la descripción de la imagen aquí
Nota: Si reduce el ancho del lienzo de Interface Builder (aproximadamente menos de 650 píxeles), la interfaz de usuario utilizada para cambiar el dispositivo cambiará ligeramente. La lista de dispositivos se contrae en la lista desplegable de dispositivos:
Inserte la descripción de la imagen aquí
Cuando se presiona, se muestra una lista de dispositivos disponibles dispuestos verticalmente:
Inserte la descripción de la imagen aquí
Ahora, observe más de cerca el Controlador de vista de información puntual: ¿
Inserte la descripción de la imagen aquí
Es posible que desee saber cuál es el color?

El color de fondo de estas etiquetas y botones no se mostrará en tiempo de ejecución. En el guión gráfico, son ayudas visuales que ayudan a mostrar cómo el cambio de varias propiedades de la vista de pila afecta su marco de vista incrustado.

Si desea ver el color de fondo en cualquier momento mientras ejecuta la aplicación, puede comentar temporalmente SpotInfoViewController en la siguiente línea en viewDidLoad ().

// Clear background colors from labels and buttons
for view in backgroundColoredViews {
    
    
  view.backgroundColor = UIColor.clear
}

Cualquier etiqueta conectada al conector tiene un texto de marcador de posición que coincide con el nombre de la variable del conector. Esto hace que sea más fácil determinar qué texto de etiqueta se actualizará en tiempo de ejecución. Por ejemplo, una etiqueta con el texto <whyVisitLabel> está conectada a:

@IBOutlet var whyVisitLabel: UILabel!

¡Es hora de empezar!

Tu primera vista de pila

Primero, arreglará el espacio entre la fila inferior de botones. Una vista de pila puede distribuir sus subvistas a lo largo de su eje de varias formas. Una forma es establecer un espacio igual entre cada vista.
Inserte la descripción de la imagen aquí
Afortunadamente, incrustar una vista existente en una nueva vista de pila es muy sencillo. Primero, seleccione todos los botones en la parte inferior de la escena "Controlador de vista de información puntual" haciendo clic en uno y luego haciendo clic en comandos en los otros dos. Utilice el botón "Mostrar esquema del documento" en la esquina inferior izquierda del lienzo del guión gráfico para abrir la vista del esquema.
Inserte la descripción de la imagen aquí
Confirme que ha seleccionado los tres botones.
Inserte la descripción de la imagen aquí
Están resaltados en la vista de esquema. También puede hacer clic en cada botón del comando en la vista de esquema para seleccionarlos.

Después de seleccionar, haga clic en el botón "Insertar" en la barra de herramientas "Diseño automático" en la esquina inferior derecha del lienzo del guión gráfico. Aparece un menú con las opciones de incrustación disponibles. Seleccione la vista de pila:
Inserte la descripción de la imagen aquí
Xcode incrustará el botón en la nueva vista de pila por usted.

Inserte la descripción de la imagen aquí

Restricciones de vista de pila

Aunque la vista de pila es responsable de colocar los botones, aún necesita agregar restricciones de diseño automático para colocar la vista de pila en sí.

Cuando incrusta una vista en una vista de pila, perderá sus restricciones en otras vistas. Por ejemplo, antes de insertar el botón en la vista de pila, hay una restricción de espacio vertical entre la parte superior del botón "Enviar calificación" y la parte inferior de la etiqueta de CALIFICACIÓN:
Inserte la descripción de la imagen aquí
seleccione el botón "Enviar calificación" y verifique que ya no tenga cualquier restricción:

Inserte la descripción de la imagen aquí
También puede verificar el verificador de tamaño (Opción-Comando-5) para verificar que no haya restricciones: a
Inserte la descripción de la imagen aquí
veces es difícil seleccionar elementos específicos en el controlador de vista de un guión gráfico lleno de gente. Puede seleccionar elementos de la vista de esquema, o usar Mayús y hacer clic con el botón derecho en la vista que desea seleccionar o mantener presionada la tecla Control y mantener presionada la tecla Mayús para hacer clic. Esto le proporciona un menú contextual que muestra la jerarquía de vista de la ubicación del clic. Seleccione la vista de pila haciendo clic en el menú.
Inserte la descripción de la imagen aquí
Ahora que se ha seleccionado la "Vista de pila", puede agregarle restricciones.
Inserte la descripción de la imagen aquí
Haga clic en el botón "Agregar nueva restricción" en la barra de herramientas de Autodiseño para mostrar la ventana emergente "Agregar nueva restricción".
Inserte la descripción de la imagen aquí
Primero, agregue una marca de verificación en Restringir a los márgenes. Luego, agregue las siguientes restricciones al borde de la vista de pila:

Top: 20, Leading: 0, Trailing: 0, Bottom: 0

Verifique cuidadosamente los números de límite superior, superior, inferior e inferior. Asegúrese de haber encendido las cuatro vigas en I rojas y restringido a los márgenes. Luego, haga clic para agregar 4 restricciones.
Inserte la descripción de la imagen aquí
Ahora, el tamaño de la vista de pila es correcto, pero alarga el primer botón para llenar cualquier espacio adicional.

Inserte la descripción de la imagen aquí

Apariencia de vista de pila

El atributo que determina cómo la vista de pila organiza sus subvistas a lo largo de su eje es la distribución. Actualmente, está configurado en Rellenar, lo que significa que la subvista llenará completamente la vista de la pila a lo largo de su eje. Con este fin, la vista de pila solo expandirá una de sus vistas secundarias para llenar este espacio adicional. Específicamente, expande la vista con el contenido horizontal de menor prioridad, o si todas las prioridades son iguales, expande la primera vista.

Sin embargo, no desea que los botones llenen completamente la vista de la pila, pero desea que el espacio entre ellos sea igual.

Asegúrese de que la vista de la pila aún esté seleccionada y vaya al inspector de "Propiedades". Cambie la asignación de relleno a espaciado igual:
Inserte la descripción de la imagen aquí
ahora cree y ejecute, haga clic en cualquier celda y luego gire el simulador. ¡Verá que los botones inferiores ahora están igualmente espaciados!
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
Al implementar una interfaz de usuario, pregúntese siempre si los elementos encajan en el espacio disponible.

Este es un ejemplo de cómo su contenido afecta la experiencia del usuario: cambie el título del botón de Wikipedia al sitio web de Wikipedia y ejecute la aplicación. Gire el simulador de retrato a paisaje para ver la diferencia.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
En modo retrato con espacio reducido, se corta el texto del último botón, mientras que en modo paisaje todo encaja.

Esto es algo que se encuentra a menudo, especialmente en tamaños de pantalla más estrechos, como el iPhone SE.

Afortunadamente, esto es fácil de solucionar. Con la vista de pila aún seleccionada, regrese al inspector de atributos. Cambie la distribución de espaciado equitativo a relleno proporcionalmente y cambie el valor de espaciado a 10:
Inserte la descripción de la imagen aquí
Ahora, cree y ejecute y verifique en ambas direcciones. Encontrarás todo en orden.
Inserte la descripción de la imagen aquí
Cambie el nombre del botón a Wikipedia.

¡Felicitaciones, ha creado su primera vista de pila!

Sin vista de pila

Para resolver este problema de espaciado sin una vista de pila, tendrá que usar una vista de intervalo entre cada par de botones, agregar restricciones de igual ancho a todas las vistas de intervalo y varias otras restricciones para colocar las vistas de intervalo correctamente.

Esto se parece a lo siguiente. Para ser visible en la captura de pantalla, la vista de intervalo muestra un fondo gris claro:
Inserte la descripción de la imagen aquí
si tiene que realizar una operación en el guión gráfico, no es un problema, pero muchas vistas son dinámicas. Debido a las restricciones y vistas de intervalo adyacentes, agregar nuevos botones u ocultar o eliminar botones existentes en tiempo de ejecución no es una tarea sencilla.

Para ocultar la vista en la vista de pila, establezca la propiedad oculta de la vista contenida en verdadero, y luego la vista de pila procesará las vistas restantes. Esta es una forma de corregir el espaciado del texto cuando el usuario oculta el texto debajo de la etiqueta CLIMA. Después de agregar la etiqueta de la parte meteorológica a la vista de pila, puede operar en este tutorial.

Nota: Ahora sabe cómo especificar el intervalo entre subvistas en la pila. Pero, ¿qué sucede si desea utilizar un espaciado diferente después de una subvista específica? A partir de iOS 11, puede usar setCustomSpacing: afterView para hacer esto .

Sección de conversión

A continuación, convertirá todas las demás partes de SpotInfoViewController para usar la vista de pila. Esto le permite completar las tareas restantes. Comience con la parte de puntuación.

Convierta la sección de calificaciones
Encima de la vista de pila que creó, seleccione la pestaña "calificaciones" y la etiqueta de estrella junto a ella.

Luego, haga clic en Editor ▸ Insertar ▸ Vista de pila.

Ahora, seleccione la vista de pila recién creada y haga clic en el botón "Agregar nueva restricción" nuevamente. Verifique la restricción al margen y agregue las siguientes tres restricciones:

Top: 20, Leading: 0, Bottom: 20

Inserte la descripción de la imagen aquí
Ahora vaya al inspector de propiedades y establezca el espaciado en 8.

Nota: Es posible que haya notado que el espaciado se ha establecido en 8. Anteriormente, el espaciado se establecía automáticamente en 24. Xcode se ha vuelto lo suficientemente inteligente como para inferir el valor de espaciado para que coincida con el valor antes de la vista incrustada. ¿Guay, verdad?

Compile y ejecute para verificar que todo sea igual que antes.

Desincrustar la vista de pila

Antes de ir demasiado lejos, es mejor realizar un entrenamiento en primeros auxilios para prevenir problemas. Por ejemplo, puede descubrir que tiene una vista de pila adicional debido a la experimentación, la refactorización o el azar.

Afortunadamente, existe una manera fácil de desvincular la vista de la vista de pila.

Primero, seleccione la vista de pila que desea eliminar. Haga clic en el botón Insertar. A continuación, seleccione "No incrustado" en el menú contextual que aparece:
Inserte la descripción de la imagen aquí
Otra forma de hacer esto es seleccionar la vista de pila y luego seleccionar "Editor" ▸ "Desincrustado" en el menú.

Crear una vista de pila vertical
Ahora, cree su primera vista de pila vertical. Seleccione la pestaña "Por qué visitar" y más abajo, y luego seleccione "Insertar en ▸ Vista de pila".

Cuando inserta una etiqueta en la vista de pila, Xcode deducirá que debería ser una pila vertical según la posición de la etiqueta.

La etiqueta inferior solía tener una restricción para fijarla en el margen derecho, pero incrustar la etiqueta en la vista de pila puede eliminar esta restricción. Actualmente, la vista de pila no tiene restricciones, por lo que se usa el ancho inherente de su vista más grande.

Después de seleccionar la vista de pila, haga clic en el botón "Agregar nueva restricción". Establezca la restricción superior, la restricción principal y la restricción final en 0. Asimismo, asegúrese de que la opción Restringir al margen esté seleccionada.

Luego, haga clic en el menú desplegable a la derecha de la restricción inferior y seleccione CLIMA (distancia actual = 20):
Inserte la descripción de la imagen aquí
De forma predeterminada, Interface Builder le mostrará la restricción al vecino más cercano, para la restricción inferior, la restricción es " oculto "a una distancia de 15 Botón. Debe colocar la restricción debajo de la etiqueta CLIMA.

Finalmente, haga clic para agregar 4 restricciones. Ahora debería ver lo siguiente:

Inserte la descripción de la imagen aquí
Ahora tiene una vista de pila expandida con el borde derecho fijado al margen derecho de la vista. Sin embargo, el ancho de la etiqueta inferior sigue siendo el mismo. Resolverá este problema actualizando la propiedad de alineación de la vista de pila.

Propiedades de alineación

La propiedad de alineación determina cómo la vista de pila organiza su vista perpendicular a su eje. Para una vista apilada verticalmente, los valores posibles son Relleno, Inicial, Centro y Final.

Los posibles valores de alineación de la vista de pila horizontal son ligeramente diferentes:

Inserte la descripción de la imagen aquí
La vista de pila horizontal tiene .top en lugar de .leading y tiene .bottom en lugar de .trailing. También hay dos atributos, que solo son válidos en la dirección horizontal, .firstBaseline y .lastBaseline.

Seleccione cada valor para ver cómo afecta la ubicación de la etiqueta en la vista de pila vertical:

Rellenar :
Inserte la descripción de la imagen aquí
Líder:
Inserte la descripción de la imagen aquí

Centrar:
Inserte la descripción de la imagen aquí

Seguimiento
Inserte la descripción de la imagen aquí

Después de probar cada valor, configure Alineación en Relleno:
Inserte la descripción de la imagen aquí
Generar y ejecutar para verificar que todo se vea bien y que no haya regresión.

Especificar Relleno significa que desea que todas las vistas llenen la vista de pila perpendicular a su eje. Esto también hará que la etiqueta POR QUÉ VISITAR también se extienda hasta el borde derecho.

¿Qué pasa si solo desea que la etiqueta inferior se extienda hasta el borde?

Actualmente, esto no es importante porque ambas pestañas tienen un fondo claro en tiempo de ejecución, pero será importante al convertir la parte del tiempo.

Aprenderá a usar la vista de pila adicional para lograr esto

Que parte de la conversión ver

Esta parte de la conversión es similar a lo que ya hizo.

  1. Primero, seleccione la etiqueta que desea ver y luego seleccione <whatToSeeLabel> debajo de ella.
  2. Haga clic en el botón "Insertar" y seleccione "Vista de pila".
  3. Haga clic en el botón de alfiler.
  4. Seleccione Restringir al margen y agregue las siguientes cuatro restricciones:
Top: 20, Leading: 0, Trailing: 0, Bottom: 20
  1. Establezca la Alineación de la vista de pila en Rellenar.

Su guión gráfico ahora debería verse así:
Inserte la descripción de la imagen aquíEsto le deja solo con la parte del clima.

Convertir la parte del clima

Debido al botón "ocultar", la parte meteorológica es más complicada que las demás.

Para convertir la parte meteorológica, puede crear una vista de pila anidada incrustando la etiqueta CLIMA y el botón Ocultar en la vista de pila horizontal. Luego, incruste la vista de pila horizontal y <weatherInfoLabel> en la vista de pila vertical.

Se parece a esto:

Inserte la descripción de la imagen aquí
Tenga en cuenta que la etiqueta "clima" se ha ampliado para igualar la altura del botón "ocultar". Esto dejará espacio adicional entre la línea de base de la etiqueta WEATHER y el texto debajo de ella.

Recuerde, su alineación especifica la posición perpendicular a la vista de pila. Por lo tanto, puede establecer la alineación en Inferior:

Inserte la descripción de la imagen aquí
Sin embargo, no desea que la altura del botón "ocultar" determine la altura de la vista de la pila.

En su lugar, eliminará el botón "ocultar" de todas las vistas de la pila.

El botón "Ocultar" permanecerá en la subvista de la vista de nivel superior, y le agregará restricciones en la etiqueta WEATHER; la etiqueta estará en la vista de pila. Así es, agregará restricciones desde los botones fuera de la vista de pila a las etiquetas dentro de la vista de pila.

Seleccione la etiqueta WEATHER y seleccione <weatherInfoLabel> debajo de ella, y luego apílelos en la Vista de pila.

Haga clic en el botón Agregar nueva restricción, seleccione Restringir al margen y agregue las siguientes cuatro restricciones:

Top: 20, Leading: 0, Trailing: 0, Bottom: 20

Establezca la Alineación de la vista de pila en Rellenar:

Inserte la descripción de la imagen aquí
Debe tener una restricción entre el borde izquierdo del botón "Ocultar" y el borde derecho de la etiqueta "CLIMA", por lo que dejar que la etiqueta "CLIMA" llene la vista de la pila no funcionará.

Sin embargo, desea que <weatherInfoLabel> en la parte inferior llene la vista de pila.

Puede hacer esto simplemente incrustando la etiqueta WEATHER en la vista de pila vertical. Recuerde que la alineación puede establecer la vista de la pila vertical en .leading, y si la vista de la pila se extiende más allá de su ancho inherente, sus subvistas permanecerán alineadas con el extremo frontal.

Use el esquema del documento o use el método Control-Shift-clic para seleccionar la pestaña "clima". Luego, incorpórelo en la nueva vista de pila.

Establezca Alineación en Líder y asegúrese de que Eje esté configurado en Vertical:
Inserte la descripción de la imagen aquí
¡perfecto! La vista de la pila exterior está estirando la vista de la pila interior para llenar el ancho, pero la vista de la pila interior permite que la etiqueta mantenga su ancho original.

Construye y ejecuta. Oh, oh, ¿por qué el botón "ocultar" se cuelga en medio del texto?
Inserte la descripción de la imagen aquí
Cuando la etiqueta WEATHER está incrustada en la vista de pila, se eliminan todas las restricciones entre la etiqueta y el botón "ocultar".

Para agregar una nueva restricción, mantenga presionada la tecla Control y arrastre el botón "Ocultar" a la pestaña CLIMA.

Mantenga presionada la tecla Mayús para seleccionar varias opciones y luego seleccione "Espaciado horizontal" y "Primera línea de base". Luego presione Entrar o haga clic en cualquier lugar fuera de la vista emergente:
Inserte la descripción de la imagen aquí
Construir y ejecutar. El botón "Ocultar" ahora debería estar colocado correctamente. Dado que la etiqueta configurada como oculta está incrustada en la vista de pila, presione "Ocultar" para ocultar la etiqueta y ajustar la vista debajo de ella, todo sin ajustar manualmente ninguna restricción.
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquíAhora que todas las partes están en la única vista de pila, puede incrustarlas en la vista de pila exterior, lo que hará que las dos últimas tareas sean triviales.

Vista de pila superior

Haga clic en el comando para seleccionar las cinco vistas de pila de nivel superior en la vista de esquema.

Luego incruste todos en una vista de pila:
Inserte la descripción de la imagen aquí
haga clic en el botón "Agregar nueva restricción", seleccione "Restringir al margen" y agregue la restricción 0 a todos los lados. Luego, establezca Espaciado en 20 y Alineación en Relleno. La escena del guión gráfico ahora debería verse así:
Inserte la descripción de la imagen aquí
Construir y ejecutar:

Inserte la descripción de la imagen aquí¡Maldita sea! Al incrustar la vista de pila WEATHER en una vista de pila externa, parece que el botón de ocultar pierde sus restricciones nuevamente. No hay problema, solo agregue restricciones nuevamente de la misma manera que antes:

  • Mantenga presionada la tecla Control y arrástrela desde el botón "Ocultar" a la pestaña CLIMA.
  • Mantenga presionada la tecla Shift.
  • Seleccione el espaciado horizontal y la línea de base.
  • Presione Entrar o haga clic en cualquier lugar fuera de la vista emergente.

Construye y ejecuta. El botón oculto ahora está en la posición correcta.

Reubicar la vista

Ahora que todas las partes están en la vista de la pila superior, modificará la posición para ver qué parte, por lo tanto, la parte del clima sobre ella.

Seleccione la vista de la pila intermedia en la vista de esquema y arrástrela entre la primera vista y la segunda vista.

Nota: Mantenga el puntero a la izquierda de la vista de pila entre la que desea arrastrar, para que siga siendo una subvista de la vista de pila externa. El pequeño círculo azul debe estar a la izquierda entre las dos vistas de la pila, no a la derecha:

Inserte la descripción de la imagen aquí

Configuración de clase de tamaño

Finalmente, dirija su atención a la tarea restante de la lista. En el modo horizontal, el espacio vertical es un bien escaso, por lo que desea unir las distintas partes de la vista de la pila. Para hacer esto, usará la clase de tamaño para establecer el espaciado de la vista de pila de nivel superior en 10 en lugar de 20 cuando la clase de tamaño vertical es compacta.

Seleccione la vista de pila de nivel superior y, a continuación, en el inspector "Propiedades", haga clic en el botón + junto a "Espaciado":
Inserte la descripción de la imagen aquí
seleccione "Cualquier ancho" y "Altura compacta", y luego seleccione "Agregar variación".
Inserte la descripción de la imagen aquí
Establezca el espaciado en 10 en el nuevo campo hC:
Inserte la descripción de la imagen aquí
Generar y ejecutar. El espaciado en el modo retrato debe permanecer igual. Gire el simulador y observe que el espacio entre las partes se ha reducido, y los botones ahora tienen suficiente espacio desde la parte inferior de la vista:
Inserte la descripción de la imagen aquí
si no agrega una vista de pila de nivel superior, aún puede usar la clase de tamaño para separe las cuatro restricciones de las cinco partes El espaciado vertical de cada restricción en se establece en 10, pero ¿no es mejor establecerlo? ¿En un lugar?

Las cosas relacionadas con el tiempo son mejores, como la animación.

Animación

Actualmente, la aplicación está muy nerviosa al ocultar y mostrar detalles del clima. Agregará algunas animaciones para suavizar la transición.

La vista de pila es compatible con el motor de animación UIView. Esto significa que animar la aparición o desaparición de la subvista diseñada es tan simple como isHidden cambiar sus propiedades dentro del bloque de animación.

Cambiar las propiedades de la vista secundaria organizada de isHidden actualizará el diseño de la vista de la pila principal. Si la actualización se realiza en un bloque de animación, será lo mismo si cambia el diseño usted mismo en el bloque de animación.

¡Ahora es el momento de escribir código! Abra SpotInfoViewController.swift y vea updateWeatherInfoViews (hideWeatherInfo: animado :).

Verá estas líneas al final del método:

weatherHideOrShowButton.setTitle(newButtonTitle, for: .normal)
weatherInfoLabel.hidden = shouldHideWeatherInfo

Reemplácelos con lo siguiente:

if animated {
    
    
  UIView.animate(withDuration: 0.3) {
    
    
    self.weatherHideOrShowButton.setTitle(newButtonTitle, for: .normal)
    self.weatherInfoLabel.isHidden = shouldHideWeatherInfo
  }
} else {
    
    
  weatherHideOrShowButton.setTitle(newButtonTitle, for: .normal)
  weatherInfoLabel.isHidden = shouldHideWeatherInfo
}

Compile y ejecute, y luego haga clic en el botón "Ocultar" o "Mostrar". ¿No sería mejor la versión animada?

Además de las propiedades ocultas contenidas en la vista de pila de la vista de animación, también puede usar la vista de rendimiento de animación de pila en sí, como alineación, distribución, espaciado e incluso eje.

¿A dónde ir entonces?

Puede descargar la versión completa del proyecto usando el botón "Descargar materiales" en la parte superior o inferior de este tutorial. Aquí hay algunos recursos que necesitan más investigación:

referencia

https://www.raywenderlich.com/2198310-uistackview-tutorial-for-ios-introducing-stack-views

Supongo que te gusta

Origin blog.csdn.net/zgpeace/article/details/113486816
Recomendado
Clasificación