Приложение для просмотра гифок с возможностью делиться ими, копировать ссылку или сохранять в галлерею.
- Реализовать мозаичный вид коллекции с динамичной высотой гифок.
- Избежать подлагиваний коллекции при скролле.
- Реализовать детальный просмотр выбранной гифки с возможность поделиться ей, сохранить в галерею или скопировать ссылку на сайт.
- Реализовать возможость делиться гифкой сразу в несколько популярных сервисов (iMessage, Facebook, SnapChat, WhatsApp, Instagram, Twitter).
- Пагинация.
- Долго пытался разобраться как сверстать мозаичный лэйаут, в итоге после нескольких часов попыток, решил найти подходящую библиотеку, выбрал WaterfallLayout.
- Возникла сложность с показом гифки, искал информацию о том как это реализовать и понял что тема требует довольно глубокого изучения для создания оптимизированного решения, времени не было, поэтому тоже прибег к поиску библиотеки.
- Попробовав одно решение для показа гиф, моя коллекция начинала тормозить при скролле, хотя настройка коллекции, обновление данных, переиспользование и кеширование данных были реализованы достаточно хорошо. Начал разбираться в коде используемой библиотеки и смог обнаружить, что в ней парсят сразу все фреймы гифки, и держат их весь жизненный цикл гифки, при этом нет возможности прервать или остановить анимацию для оптимизации, из-за чего в свою очередь приложение начинало довольно много весить, лишь стоило немного проскроллить. В итоге с новым знанием нашел библиотеку с достаточно оптимизированным решением и умело внедрил ее в проект.
- Из-за небольшого кол-ва времени для написания задачи (2 дня), не успел разобраться с предоставляемыми API популярных сервисов, чтобы интегрировать возможность поделитья гифкой сразу в них, успел реализовать только iMessage.
- Коллецкия с красивым мозаичным видом.
- Реализован сервис для кеширования гиф.
- Добился плавного скролла.
- Кеширование и использование подгуженного контента между переключениями категорий.
- Можно отправить гиф сразу по iMessage, или поделиться через дефолтный выбор доступных приложений.
- Есть возможность скопировать ссылку на гиффку одник кликом.
- Есть возможность сохранить гифку в галлерею.
- Подгрузка контента по необходимости при скролле.
Главный экран | Анимация при плохом интернете |
Переключение категорий |
Открытие детального экрана | Копирование ссылки | Поделиться/Сохранить в галлерею |
Пагинация (гифка весит больше остальных, может чуть дольше грузить) |
---|
- Заведит учетную запись для разработчика на giphy.
- Получите API KEY.
- В файле
GiphyApi.swift
, на12
строчке, присвойте ваш ключ приватному полюapiKey
.
Путь до файла
GlamTestTaskGIPHY/Sources/Core/Api/GiphyApi.swift