Skip to content

Dmmolod/GiphyTestTask

Repository files navigation

Giphy "clone".

Описание:

Приложение для просмотра гифок с возможностью делиться ими, копировать ссылку или сохранять в галлерею.


Цель:

  • Реализовать мозаичный вид коллекции с динамичной высотой гифок.
  • Избежать подлагиваний коллекции при скролле.
  • Реализовать детальный просмотр выбранной гифки с возможность поделиться ей, сохранить в галерею или скопировать ссылку на сайт.
  • Реализовать возможость делиться гифкой сразу в несколько популярных сервисов (iMessage, Facebook, SnapChat, WhatsApp, Instagram, Twitter).
  • Пагинация.

Трудности:

  • Долго пытался разобраться как сверстать мозаичный лэйаут, в итоге после нескольких часов попыток, решил найти подходящую библиотеку, выбрал WaterfallLayout.
  • Возникла сложность с показом гифки, искал информацию о том как это реализовать и понял что тема требует довольно глубокого изучения для создания оптимизированного решения, времени не было, поэтому тоже прибег к поиску библиотеки.
  • Попробовав одно решение для показа гиф, моя коллекция начинала тормозить при скролле, хотя настройка коллекции, обновление данных, переиспользование и кеширование данных были реализованы достаточно хорошо. Начал разбираться в коде используемой библиотеки и смог обнаружить, что в ней парсят сразу все фреймы гифки, и держат их весь жизненный цикл гифки, при этом нет возможности прервать или остановить анимацию для оптимизации, из-за чего в свою очередь приложение начинало довольно много весить, лишь стоило немного проскроллить. В итоге с новым знанием нашел библиотеку с достаточно оптимизированным решением и умело внедрил ее в проект.
  • Из-за небольшого кол-ва времени для написания задачи (2 дня), не успел разобраться с предоставляемыми API популярных сервисов, чтобы интегрировать возможность поделитья гифкой сразу в них, успел реализовать только iMessage.

Итог:

  • Коллецкия с красивым мозаичным видом.
  • Реализован сервис для кеширования гиф.
  • Добился плавного скролла.
  • Кеширование и использование подгуженного контента между переключениями категорий.
  • Можно отправить гиф сразу по iMessage, или поделиться через дефолтный выбор доступных приложений.
  • Есть возможность скопировать ссылку на гиффку одник кликом.
  • Есть возможность сохранить гифку в галлерею.
  • Подгрузка контента по необходимости при скролле.

Приложение в движении с отображением затрат на память

Главный экран Анимация при
плохом интернете
Переключение категорий
Открытие детального экрана Копирование ссылки Поделиться/Сохранить в галлерею
Пагинация
(гифка весит больше остальных, может чуть дольше грузить)

Как попробовать?

  • Заведит учетную запись для разработчика на giphy.
  • Получите API KEY.
  • В файле GiphyApi.swift, на 12 строчке, присвойте ваш ключ приватному полю apiKey.

Путь до файла GlamTestTaskGIPHY/Sources/Core/Api/GiphyApi.swift

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published