- Необходимо скачать исходный репозиторий с базовыми файлами для домашнего проекта.
- Создать свое решение задачи в виде исходного кода.
- Отправить в виде pull request к данному репозиторию с наименованием ветки surname_name/feature_name (наименование ветки обязательно(!) в lowercase. feature_name будет описано отдельно в каждом домашнем задании).
- Необходимо создать прототип калькулятора, взятого из нативного приложения "Калькулятор" в системе iOS.
- Необходима поддержка landscape режима.
- Дизайн должен выполнен согласно pixel-perfect.
- Калькулятор должен поддерживать все функции вычисления нативного калькулятора кроме "(", ")", "mc", "m+", "m-", "mr".
- Калькулятор должен поддерживать операции undo/redo.
- На стартовом экране приложения должно лежать изображение в виде эллипса.
- При проведении пальцем по контуру данной фигуры в случае успеха пользователь попадает на экран с UITabbarController. Величина отклонения задается по желанию автора кода.
- Для работы приложения используется API https://swapi.co/api/
- На стартовом экране приложения должен лежать лейбл
- При запуске приложения делается запрос к people/1
- В полученном ответе берутся ссылки на все фильмы, в которых присутствует персонаж
- По ссылкам получаем названия всех фильмов
- Выводим названия всех фильмов через запятую в лейбл
- Для работы приложения используется API https://swapi.co/api/
- На стартовом экране приложения должно лежать текстовое поле и таблица (UITableView)
- При вводе имени в текстовое поле и нажатии "Ввод" (aka Return) делается запрос к странице этого персонажа, а таблица очищается
- В полученном ответе берутся ссылки на все фильмы, в которых присутствует персонаж
- По ссылкам получаем названия всех фильмов
- Выводим названия всех фильмов выводятся в таблицу, при этом они должны появиться одновременно
- При нажатии на фильм под таблицей выводится надпись "Этот фильм вышел в {год выхода} году"
Предъявлении итерации 1 к проверке является необязательным.
- Приложение представляет из себя набор из двух экранов: списка фильмов и детальная информация по каждому фильму.
- Все данные о фильмах хранятся внутри приложения (Картинка, название, описание, количество лайков). Делать сетевое взаимодействие не нужно.
- Ячейка таблицы на первом экране состоит из картинки, названия и количества лайков.
- Второй экран должен скроллится в зависимости от количества контента. На нем последовательно снизу вверх по вертикали располагаются элементы: картинка, шириной во весь экран. Ниже название без сокращений, ниже полное описание без сокращений. В самом ниже располагается кнопка с количеством лайков.
- При нажатии на кнопку с количеством лайков на экране деталей, мы увеличиваем количество лайков на обоих экранах у данного фильма.
- Можно выбрать любое одно из пяти заданий
- Использование swift 4, Xcode 9.1+.
- Наличие сетевого слоя.
- Использование персистентности и оффлайн режима.
- Использование списка: таблица, коллекция.
- Все UX/UI вопросы остаются для решения разработчиком на его усмотрение. Все вопросы по дополнительной логике также остаются на усмотрение разработчика.
- Наличие autolayout.
- Запрещается использование всех видов сторонних зависимостей и библиотек.
- Структура проекта, его архитектура остается на усмотрение разработчика.
- Оценивается в первую очередь полная работоспособность проекта и код проекта.
- Обязателен один кастомизированный анимационный переход между экранами.
- Обязательно наличие анимации внутри приложения.
- Приложение позволяет создавать напоминания для пользователя. Напоминание можно создать с временем в будущем, текстом описания, названием и прикрепленными фотографиями с фотокамеры пользователя.
- Созданные напоминания отображаются в виде списка.
- При достижении времени срабатывания - уведомление отображается в виде локального уведомления на телефоне пользователя.
- При переходе из списка к конкретному уведомлению - есть возможность отредактировать все параметры напоминания.
- Каждое уведомление можно пошарить в социальную сець Вконтакте. Должно отображаться как обычный пост с фотографиями и текстом. Текст формируется из времени, названия и описания напоминания.
- Приложение представляет из себя клиент для социальной сети вконтакте.
- После авторизации, первым экраном является лента постов пользователя.
- С ленты постов можно перейти к деталям поста пользователя.
- Помимо стандартных кнопок соцсети в деталях поста должна быть кнопка "добавить в избранное". При нажатие на данную кнопку, данный пост отправляется в хранилище телефона.
- Список избранных постов работает в оффлайне и открывается после перезагрузки приложения.
- Должна быть возможность выйти из своего аккаунта и зайти под другим.
- Приложение представляет из себя простейший музыкальный плеер.
- Для скачивания музыки можно использовать абсолютно любое API, которое позволяет прослушивать музыку и делать поиск по аудио. Пример https://freemusicarchive.org/api
- На главном экране приложения должен отображаться поиск с возможностью найти через API необходимый трек. Все найденные треки отображаются в виде таблицы. При переходе к деталям трека, отображается его обложка и детальная информация. Можно также добавить трек в избранное.
- Все избранные треки сохраняются в приложении и доступны в оффлайн режиме.
- Приложение представляет из себя простейший фоторедактор изображений.
- Фотографии могут браться с хранилища устройства или загружаться из поиска в гугл.
- Фотографию можно также получить со снимка камеры внутри приложения.
- Редактирование фотографий заключается в применении фильтров к изображению (сепия, черно-белое фото и тд.).
- Список отредактированных фотографий должен храниться внутри приложения и сохраняться после перезагрузки приложения.
- Список отредактированных фотографий должен храниться в виде истории и отображаться в табличном представлении.
- Приложение представляет из себя возможность сохранения своей геопозиции в виде умных объектов.
- В приложении должна быть кнопка добавления нового "умного объекта" (далее просто "объект") через сохранение текущей геолокации и задание радиуса. Радиус задает пользователь самостоятельно. Также задается название данному объекту. У каждого объекта есть поле "адрес", получаемое из сетевого API геокодера гугла, яндекса или 2гис.
- Главный экран приложения представляет из себя переключение между двумя вариантами. В первом варианте на экране отображается карта со всеми заданными объектами. Объекты нарисованы в виде точек с радиусом, который задал пользователь. При нажатии на карту можно также добавить новый объект. Второй вариант данного экрана отображается в виде таблицы с заданными объектами. В таблице выводится вся информация. Помимо этого в таблице объекты можно удалять.
- С главного экрана можно перейти на экран деталей объекта, который содержит в себе помимо детальной информации об объекте, также информацию о количестве посещений данного объекта пользователем и суммарное время нахождения в данной зоне.
- Все объекты должны храниться на устройстве и сохраняться после перезагрузки приложения.
- При входе пользователя в радиус любого объекта ему приходит local notification.