Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImageFeed

ImageFeed — iOS-приложение для просмотра изображений из Unsplash с авторизацией через OAuth 2.0.

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

Дизайн и API

Скриншоты

Image

Возможности

  • OAuth-авторизация — безопасный вход через аккаунт Unsplash.
  • Бесконечная лента изображений — просмотр редакционной коллекции Unsplash с автоматической подгрузкой новых фотографий.
  • Избранное — добавление и удаление фотографий из списка понравившихся.
  • Полноэкранный просмотр — поддержка масштабирования и перемещения изображения с помощью жестов.
  • Поделиться — отправка ссылки на фотографию через системное меню iOS.
  • Профиль пользователя — отображение информации о пользователе, аватара и количества избранных фотографий.
  • Обработка ошибок — уведомление пользователя о сетевых ошибках с возможностью повторить запрос.

Технический стек

  • Swift
  • UIKit (программная верстка)
  • MVP (Model–View–Presenter)
  • URLSession — выполнение сетевых запросов
  • Unsplash API
  • OAuth 2.0
  • Grand Central Dispatch (GCD) — многопоточность

Архитектура

Проект построен на архитектуре MVP (Model–View–Presenter).

  • View — экраны приложения на UIKit, отвечающие за отображение данных и передачу пользовательских действий.
  • Presenter — бизнес-логика приложения, подготовка данных для отображения и обработка пользовательских событий.
  • Model — модели данных и сервисный слой для взаимодействия с Unsplash API.
  • Helpers — вспомогательные компоненты для хранения OAuth-токена в Keychain и кэширования изображений.

Особенности реализации

  • OAuth Flow — авторизация через WebView с безопасным хранением токена доступа в Keychain.
  • Асинхронная загрузка изображений — фотографии загружаются в фоновом режиме с использованием кэширования для плавной прокрутки ленты.
  • Пагинация — реализована бесконечная подгрузка изображений по мере прокрутки списка.
  • Работа с избранным — добавление и удаление фотографий выполняется через соответствующие запросы к Unsplash API.
  • Жесты в полноэкранном режиме — поддерживаются масштабирование (Pinch-to-Zoom) и перемещение изображения (Pan Gesture).

Установка

git clone https://github.com/rfhfv/ImageFeed.git
cd ImageFeed
open ImageFeed.xcodeproj

About

UIKit (Storyboards and Auto Layout), MVP, URLSession, OAuth

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages