Skip to content

Vretiel1992/Internship-form

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

TestTaskSurf

Обзор: 20230219-190605-166

Тестовое задание на позицию стажёра iOS в компании Surf

Общее описание задания:

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

Помимо верстки на UIKit, нет никаких ограничений в выборе способов реализации данной задачи. Будет это MVP или VIPER? UITableView или ScrollView? Решать разработчику!

Данные для отображения зашиваем в приложении, запросы в сеть не используем.

Задание представлено в двух версиях, в базовой и продвинутой. В базовой описаны общие требования к экрану. В продвинутой предложены варианты для улучшения, которые расположены в порядке увеличения сложности. Некоторые варианты исключают друг друга, так что не нужно делать их все (но чем больше сделано сложных вариантов, тем выше шансы на успех).

Базовая версия:

  • Картинка должна быть пропорциональных размеров согласно первому макету;
  • Экран статичный, без возможности скролла;
  • В карусели максимум 10 элементов, карусель можно проскролить вправо. Ширина элемента карусели должна зависеть от текста;
  • По нажатию на кнопку «Отправить заявку» отображать системный алерт об успехе с заголовком «Поздравляем!» и текстом «Ваша заявка успешно отправлена!» и кнопкой «Закрыть».

Продвинутая версия:

  • У всех кнопок присутствует состояние нажатия (press state). Изменение цвета делаем на свое усмотрение;
  • Экран имеет возможность скролла, картинка уезжает вместе с контентом;
  • Элементы «Отправить заявку» и «Хочешь к нам?» должны быть прибиты к низу экрана и не должны скроллиться;
  • По нажатию на элемент в карусели его состояние меняется на выбранное, по повторному нажатию возвращается в обычное состояние;
  • По нажатию на элемент в карусели он анимировано переходит на первую позицию;
  • Зацикленная и бесконечная карусель, то есть ее можно скроллить в любую сторону и сколько угодно, при этом количество элементов должно остаться равным 10, за десятым элементом следует первый;
  • Дополнительная карусель, элементы которой располагаются в два ряда и подстраиваются в зависимости от ширины ячеек. Если элементы не помещаются на экран в два ряда, они не должны отображаться;
  • Скроллить можно только контент, картинка при этом статична. Контент может скроллится вплоть до статус бара;
  • В дополнительной карусели добавить возможность скроллить контент, если на экран не поместились все элементы, которые в нее добавлены. Количество рядов должно остаться так же равным двум. Скроллится должны сразу оба ряда, а не по отдельности.

Реализация:

  • Архитектура MVP
  • Framework UIKit
  • Приложение работает на iOS 15 и выше
  • Адаптивная верстка кодом с использованием NSLayoutConstraint & Anchors
  • UICollectionView
  • UICollectionViewCompositionalLayout
  • UIViewPropertyAnimator
  • UIGestureRecognizer

About

Приложение в виде формы заявки на стажировку.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages