API Unsplash
Состоит из экрана коллекции с возможностью поиска фото.
Видое с демонстрацией приложения Google drive
- Отображает строку ввода поискового запроса
- Сохраняет историю поиска (до пяти последних запросов)
- В момент начала ввода отображаются элементы-подсказки с ранее введенными значениями. По мере ввода символов подсказки фильтруются по вхождению без учета регистра.
- Поисковый запрос выполняется по завершении ввода при помощи элементов управления клавиатуры
- В каждом элементе поисковой выдачи отображено превью-изображение и описание.
- Возможность выбирать контента по цвету.
- Реализована паггинация поиска.
- Работа Offline, запоминает последний запрос поиска и возможностью его удалять.
- Каждый экран поддерживает отображение трёх состояний:
- Отображение контента
- Состояние загрузки
- Состояние отсутствия контента
- Локализация на два языка
- Русский
- Английский
- Поддержка темный темы
- Поддержка Voice Over
- iOS 16 и выше
- Бизнес часть покрыта тестами
API - Unsplash API
- Swift 5
- UIkit
- URLSession
- Async/await
- URLCache
- Realm
- Combine
Архитектура: Чистая архитектура
UIKit потому что мне легче его оптимизировать и я лучше его понимаю. Особенно когда нужно сделать производительную коллекцию.
Realm для меня новая технология (странненькая, с нюансом) не firebase конечно), но в целом понравилась (не успел нормально ее изучить). Я не использовал SwiftData потому что она доступна с iOS 17. Пощадите мой iPhone 8 c iOS 16(((
Combine для меня тоже еще не совсем обкатаная технология. Только пробою с ней работать. Хотя я видел связку Realm+Combine, выглядит интересно, но требует время для понимания.
И нормально замерить fps можно с помощью Xcode instrument Core Animation FPS. Моя реализация хромает(
P.S. Футажи помог записать друг. Я использовал TestFlight для распространения.
P.S. Не обращайте внимание на gitflow) и комиты) оно страшненькие.