Многостраничное приложение для просмотра изображений через Unsplash API. Приложение поддерживает авторизацию через OAuth, просмотр ленты изображений, работу с избранным и просмотр профиля.
- Вход через OAuth Unsplash с использованием POST-запроса для получения Auth Token.
- Экран авторизации содержит:
- Логотип приложения.
- Кнопку «Войти».
- Алгоритмы и доступные действия:
- После нажатия кнопки «Войти» открывается браузер для авторизации.
- При успешной авторизации браузер закрывается, и открывается лента изображений.
- При ошибке входа отображается модальное окно с описанием ошибки.
- Лента содержит изображения из Unsplash Editorial.
- Каждая карточка в ленте включает:
- Изображение.
- Кнопку «Лайк».
- Дату загрузки фотографии.
- Алгоритмы и доступные действия:
- Лента автоматически подгружается при скролле (реализация через UITableView).
- Если изображение не загружается, отображается системный лоадер или плейсхолдер.
- Пользователь может:
- Лайкать изображения. Кнопка меняет состояние (сердечко серого или красного цвета).
- Снимать лайк, нажав повторно.
- Переходить на экран просмотра изображения на весь экран.
- Навигировать между лентой и профилем через таб бар.
- Изображение растягивается до границ экрана.
- Экран содержит:
- Кнопку возврата на предыдущий экран.
- Кнопку «Поделиться» для загрузки изображения или отправки ссылки.
- Алгоритмы и доступные действия:
- Поддержка жестов для перемещения, зума и поворота изображения.
- Если изображение невозможно загрузить, отображается плейсхолдер.
- При нажатии на кнопку «Поделиться» открывается системное меню с опциями загрузки и отправки изображения.
- Экран профиля содержит:
- Аватар пользователя.
- Имя и username.
- Информацию о пользователе.
- Кнопку «Выйти» для логаута.
- Алгоритмы и доступные действия:
- Данные профиля загружаются из Unsplash API.
- При отсутствии данных отображаются плейсхолдеры.
- Кнопка выхода из профиля вызывает системный алерт для подтверждения выхода:
- При подтверждении пользователь разлогинивается и возвращается на экран авторизации.
- При отказе пользователь остается в профиле.
- Навигация между лентой и профилем осуществляется через таб бар.
- Реализация интерфейса через:
- UIKit:
UITableView
,UIImageView
,UIButton
,UILabel
,TabBarController
,NavigationController
.
- UIKit:
- Поддержка устройств с iOS 13 и выше.
- Только портретный режим.
- Работа с изображениями через
URLSession
с поддержкой лоадеров и плейсхолдеров.