https://github.com/2gpb/vktesttask
https://github.com/2gpb/vktesttask
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/2gpb/vktesttask
- Owner: 2Gpb
- Created: 2025-06-25T17:02:06.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-26T17:09:31.000Z (12 months ago)
- Last Synced: 2025-06-26T18:25:37.745Z (12 months ago)
- Language: Swift
- Size: 1.91 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# VKTestTask
## Описание
Приложение отображает список отзывов с рейтингом, текстом и фотографиями. Добавлены интерактивные элементы, кастомные анимации, асинхронная загрузка и кеширование изображений.
## Условия выполнения
- Верстка с использованием UIKit
- Соблюден стиль проекта
- Проект без сторонних библиотек
---
## Что реализовано
- **Профиль пользователя:**
- Аватар
- Имя и фамилия
- Рейтинг в виде звёзд
- Картинки в отзыве
- **Отзывы:**
- Поддержка нескольких изображений
- Раскрытие полного текста через кнопку “Показать больше”
- Отдельная ячейка в конце с количеством отзывов
- **Асинхронная загрузка изображений:**
- Используется `URLSession`
- Запросы отменяются при переиспользовании ячеек
- Для загрузки используется фоновый поток
- **Кеширование изображений:**
- Используется класс для кеширования изображений через `NSCache`
- **Анимации и стейты загрузки:**
- Пока загружается изображение, отображается shimmer-анимация (`CAGradientLayer + CABasicAnimation`)
- Реализован собственный кастомный индикатор загрузки (`CAShapeLayer + rotation`)
- **Оптимизация производительности:**
- Найдена и устранена утечка памяти: передача замыкания в `ReviewCellConfig`, которое захватывало `ViewModel`
- Ошибка с подвисанием при скролле была вызвана задержкой загрузки отзывов в `main queue`, переведено в фоновый поток (`GCD`)
- **Интерактивность:**
- Поддержка `Pull to Refresh` с `UIRefreshControl`
---