EDITAR: Lo siento, pero no me gusta Swift, así que usé Objective-C … Supongo que no debería ser demasiado difícil de entender.
¡Eso parecía un desafío interesante!
Es un poco difícil poner en palabras exactamente cómo hacerlo, así que hice un proyecto de ejemplo:
SpotifyBehavior.zip
- ¿Existe una documentación decente para la integración de API de Google Custom Search con la aplicación Swift iOS?
- ¿Es el iOS de Apple una marca registrada de Cisco? ¿Apple paga un corte a Cisco por usar el nombre de iOS?
- ¿Qué opinas sobre iOS9.3.4?
- ¿De qué manera es mejor Windows mobile que Android e iOS mobile?
- ¿Alguien ha encontrado una manera de hacer que sea intuitivo confiar en una aplicación empresarial iOS 9+ distribuida a través de un enlace para usuarios que no son expertos en tecnología?
Agregaré un intento de explicación a continuación, pero por ahora, aquí hay algunas capturas de pantalla del ejemplo que hice:
Este es el estado inicial:
El estado cuando tira de la vista de tabla hacia abajo:
Cuando te desplazas hasta la mitad del contenido superior:
Cuando te desplazas por las canciones:
Explicación rápida:
Básicamente todo se hace usando un solo UITableView que tiene un HeaderView. En ese HeaderView tienes SearchBar y el contenido del álbum (llamémoslo ContentView).
Luego trabaja en el método de delegado scrollViewDidScroll de UITableView para ocultar / mostrar la barra de búsqueda, y también para mover ContentView hacia abajo (usando una restricción de espacio superior) a medida que se desplaza hacia arriba para dar la sensación de que permanece en el mismo lugar en la pantalla .
Debe asegurarse de que HeaderView tenga .clipsToBounds como True, de modo que cuando mueva ContentView no salga y cubra las celdas, sino que parezca desaparecer detrás de ellas.
También hay una sectionView en esa TableView con el botón Shuffle y el título de la Sección (que no aparece en sus capturas de pantalla, pero vi en mi aplicación Spotify).
Y … eso es básicamente todo. Asegúrese de verificar la jerarquía de vistas en el Guión gráfico y las pocas restricciones que utilicé.
Debería estar lo suficientemente cerca 🙂