Cómo crear una interfaz similar a Spotify con Swift e iOS 8

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

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 🙂

Después de seguir el ejemplo de Manuel Costa, pude hacerlo funcionar también rápidamente. Si alguien más está interesado, descargue su proyecto y luego mire el que escribí.

@ SpotifyBehaviorSwift.zip

Hay una biblioteca completa con documentación decente para Swift 2.0 y Objective aquí que emula el comportamiento esperado y tiene algunas muestras.

https://github.com/jamztang/CSSt

Funcionó para mí, aunque para Swift 2.2 necesitaba hacer algunos ajustes para mis propias necesidades.