*Неофициальное приложение
Привет! Мой проект - это приложение-клиент для социальной сети VK.
В этом приложение ты можешь:
- Безопасно авторизоваться в свой аккаунт через веб интерфейс
- Просмотреть своих друзей и их фотографии
- Увидеть свои группы и найти новые
- Почитать свою ленту новостей, а возможно и оценить новость
- Насладиться кастомными анимациями (нажми на фотографию друга или группы)
Для чего я решил создать этот клиент? Официальный клиент достаточно объемный с большим количеством функций, которые зачастую могут быть не нужны, а некоторые вообще в них теряются. Поэтому я решил создать простой, понятный, красивый и легкий клиент для просмотра друзей, своих групп, поиска новых и просмотра ленты новостей, что зачастую многим будет достаточно.
- Применить такие коллекции как UITableView/UICollectionView
- Применить следующие паттерны:
- Singleton
- Observable
- Создать 6ь и более экранов
- Использовать UITabBarController/UINavigationController для навигации в приложении
- Использовать KeyChain при помощи SwiftKeychainWrapper для хранения токена, информации владельца аккаунта после авторизации
- Использовать UserDefaults для хранения малых объемов структурированной мета-информации
- Реализовать хранение друзей, групп в Realm
- Использовать кэширование фотографий/видео при помощи собственной сервиса кэширования - обертки над FileManager
- Использовать сеть и реализовать более 3х сетевых запросов
- Использовать Decodable модели данных и модели данных Realm
- Реализовать собственный сервис вычисления измененных индексов в Realm для обновления только измененных ячеек
- Использовать, допольнительно к основной, глобальную и собственную очереди
- Использовать протоколы и замыкания для взаимодействия между классами
- Реализовать интерективную анимацию перелистывания фотогрфий с отслеживанием прогресса
- Реализовать кастомный поиск по группам в хедере таблицы с собственной анимацией
- Использовать PromiseKit для загрузки с сервера, парсинга, сохранения групп в Realm и отображения данных в коллекции
- Реализовать предзагрузку новостей, паггинацию новостей - бесконечная новостная лента
- Использовать для отображения новости секцию, составляемую из набора ячеек, в зависимости от типа новости
- Реализовать поддержку светлой и темной системных тем
- Реализовать получение новых новостей через pull to refresh
- Реализовать работу с сетью через синглтон сесии
- Использовать Alamofire и URLSession
- Использовать Operation для асинхронного получения, парсинга и сохранения в Realm новостей
- Реализовать кастомные ячейки для друзей, фотографий, групп и новостей
- Создать собственный контрол для лайков и их количества у фотографий пользователя
- Реализовать возможность адаптивного расположения фотографий пользователя в зависимости от ориентации интерфейса (количество фотографий в строке)
- Реализовать обновление коллекций с друзьями, фотографиями друзей и групп при изменении данных в Realm через observer
- Исползовать Firebase для хранения групп пользователя
- Сделать кастомные анимации UIView
- Реализовать астомные анимации переходов между экранами через UINavigationController с использованием аниматора UIViewControllerAnimatedTransitioning
- Реализовать WebKitViewController для авторизации в VK
- Реализовать кастомное взаимодействие перехода UIPercentDrivenInteractiveTransition при помощи UIScreenEdgePanGestureRecognizer
- Реализовать возможность смены/выхода из учетной записи
- Определить минимальную поддерживаемую версию OS: iOS 15.0
- Использовать пакетные менеджер CocoaPods
- Реализовать затемнения фона фотографии при тапе на ней
Как видишь, все 5ь экранов отличаются своей простотой и дружелюбностью, всё понятно и ясно.
- Главный экран - экран друзей, в нем через выбора друга можно перейти в его фотографии.
- На экране фотографий можно перейти в режим полноэкранного просмотра фотографий.
- Экран групп отличается кастомным поиском в хедере таблицы с собственной анимацией.
- Новости - третий экран в таббаре, в нём отображаются новости в разных форматах, в зависимости от типа новости.
- Опциональный первый экран (если токен авторизации еще не был получен или истек) - стандартная веб авторизации через VK.
Поддерживаются системные темы, при переходе системы в темный режим, приложение перестраивает цветовую палитру.
- На экранах друзей и групп можно увидеть пружинную анимацию аватара, если нажать на неё.
- Переход на экраны фотографий сопровождаются кастомными анимациями загрузки в виде облака и перехода - выезжающей вью, прикрепленной в правом верхнем углу.
- На экране фотографий пользователя при тапе на кнопку лайка можно увидеть прыгающую анимацию с переворотом сердца и изменение его цвета, а также движение label с количеством лайков.
- Переход в режим полноэкранного просмотра фотографии происходит увеличеним вью из той ячейки коллекции, на фотографию которой был тап.
- При смене фотографии в полноэкранном режиме просмотра жестом влево можно наблюдать анимацию уменьшения текущей фотографии и ее отъезд влево за экран, и выезд справа следующей фотографии. При свайпе вправа, анимация проигрывается наоборот.
- При тапе на фотографию в полноэкранном режиме анимированно меняется цвет фона и исчезает navigation bar.
- При просмотре фотографии в полноэкранном режиме при смене ориентации интерфейса в горизонтальное положение уменьшается размер изображения.
- Если выбрать строку поиска на экране групп, будут анимированы скрытая кнопка, которая выезжает справа, длина textfield уменьшится, а иконка лупы отъедет в левый край хедера таблицы. Если нажать "Отмена", произойдет обратная анимация.
- При свайпе сверху на экране новостей анимация pull-to-refresh
- При просмотре фотографии в полноэкранном режиме в горизонтальной ориентации интерфейса положение происходит анимация удаления navigation bar и увеличение размера фотографии.
- Анимация загрузки при переходе с экрана друзей на экран фотографий выбранного друга в тёмном режиме.
- Адаптация цветовой палитры при смене системного режима.
Если ты хочешь сделать вклад в этот проект, я всегда рад принять твой merge request.
Если тебе нужно связаться со мной или получить помощь по проекту, то не стесняйся - пиши на почту и в телеграм
Все иконки в приложении взяты с сайта https://www.flaticon.com
Для получения информации с сайта https://vk.com используется их собственный VK-Api взяты https://dev.vk.com