Многостраничное приложение предназначено для просмотра изображений через API Unsplash. Цели приложения:
- Просмотр бесконечной ленты картинок из Unsplash Editorial.
- Просмотр краткой информации из профиля пользователя.
- В приложении обязательна авторизация через OAuth Unsplash.
- Главный экран состоит из ленты с изображениями. Пользователь может просматривать ее, добавлять и удалять изображения из избранного.
- Пользователи могут просматривать каждое изображение отдельно и делиться ссылкой на них за пределами приложения.
- У пользователя есть профиль с избранными изображениями и краткой информацией о пользователе.
- У приложения есть две версии: расширенная и базовая. В расширенной версии добавляется механика избранного и возможность лайкать фотографии при просмотре изображения на весь экран.
- Swift
- UIKit
- MVP
- OAuth 2.0
- SPM
- KVO
- Kingfisher
- ProgressHUD
- WebKit
- SwiftKeychainWrapper
- AutoLayout programmatically
- REST API
- XCTest
- Авторизация работает через OAuth Unsplash и POST запрос для получения Auth Token.
- Лента реализована с помощью UITableView.
- В приложении использованы UImageView, UIButton, UILabel, TabBarController, NavigationController, NavigationBar, UITableView, UITableViewCell.
- Приложение должно поддерживать устройства iPhone с iOS 13 или выше, предусмотрен только портретный режим.
- Все шрифты в приложении — системные, не нужно их скачивать; в Interface Builder это шрифт «System» в выпадающем списке, а при вёрстке из кода —
systemFont(ofSize:weight:)
. В текущих версиях iOS (13—16) системный шрифт — это шрифтSF Pro
, но в будущих версиях он может поменяться.
- Авторизация через OAuth.
- Просмотр ленты (пользователь может просматривать изображения в ленте, переходить к просмотру отдельного изображения и добавлять их в избранное).
- Просмотр изображения на весь экран (из ленты пользователь может перейти к просмотру изображения на весь экран и поделиться им).
- Просмотр профиля пользователя (пользователь может перейти в свой профиль, чтобы посмотреть данные профиля или выйти из него).