Amapic - это iOS-приложение, которое в итоге должно представлять собой альтернативную галерею для просмотра фотографий (т.е. альтернативу Photos). Фотографии группируются по похожести.
Приложение уже в App Store, его можно протестировать
Ваша задача - улучшить пользовательский опыт с приложением:
- Добавить кеширование групп. После того, как пользователь один раз импортировал альбом или часть альбома с определёнными датами, нужно записывать полученные группы в кэш. В следующие разы, когда пользователь импортирует тот же альбом или часть альбома с теми же датами, нужно проверять, есть ли под это запись в кэше. Нужно так же проверить, что импортируемый альбом не изменился, чтобы решить, использовать ли группы из кэша или пересоздать новые.
- Добавить листание фотографий по свайпу. На нижнем слое, когда пользователь смотрит отдельно взятую фотографию, нужно дать возможность просмотреть фотографию после открытой свайпом влево; и фотографию перед открытой свайпом вправо. Так же, как в обычной галерее Photos.
- На нижнем слое, когда пользователь смотрит отдельно взятую фотографию, нужно добавить возможность приближать фотографии пальцами. Для этого есть стандартный термин pinch to zoom, и так же работает в обычной галерее Photos.
- Исправить то, что попытка удалить фотографию крашит приложение, особенно если фотография всего одна в группе. Если пользователь удаляет единственную фотографию в группе, нужно уводить пользователя на уровень вверх
- При импорте фотографий из галереи нужно игнорировать видео - не использовать их в группировке.
- Для каждой группы фотографий нужно считать среднее время создания. То есть, если в группе 2 фотографии, у одной время создания 27 Feb 20:29:54, а у другой 28 Feb 00:01:02, то среднее время создания группы 27 Feb 22:15:28. И после этого в любом списке групп нужно сортировать группы по среднему времени создания группы - самые новые наверху, самые старые внизу
Итоговый результат работы - код в ветке #28-improv-ux
репозитория. Этот код при запуске на локальном iPhone SE 2020 (не симуляторе) через XCode должен запускать приложение, которое делает все описанное выше.