Code Monkey home page Code Monkey logo

mobile-ios-swift-course-2018's People

Contributors

andrews-moc avatar andrewsdv avatar danviitenko avatar desugar-64 avatar devvadimalbul avatar differz avatar igorkravchenko avatar imedelyan avatar msavisko avatar oanton avatar walkline avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mobile-ios-swift-course-2018's Issues

Homework 9

Для прочтения (basic):

Для прочтения, опционально (advanced):

Project

  • Создать папку в домашних заданиях (по аналогии с предыдущими)
  • Создать в папке файл README.MD
  • Добавить описание приложения
  • Добавить список функций, которые МОГУТ понравится пользователям
  • Добавить описание целевой аудитории, которая могла то бы пользовался приложением
  • Добавить описание, в чем сложность проекта
  • Инициализировать проект и запушить на github в отельный репозиторий (не MA)
  • Выбрать архитектуру для логики презентации (MVC, MVP, MVVM, MVVM+C, VIPER, Redux, etc)
  • Выбрать подход для логики приложения (SOA, Redux store, etc)
  • Добавить всю выше перечисленную информацию в файл

Homework 1

Для прочтения:

Enumerations
Structures and Classes
Properties
Methods

Практика:
Так же как в практическом задании прошлой лекции, создаем папку homeworks/[name.surname_githubusername]/homework_1
В этой папке создаем плейграунд ObjectsClassesEnumsStructs.

Задание №1
Из mobile-ios-swift-course-2018/lectures/lecture1/01 - Objects and Classes.playground скопируйте класс NamedShape вместе с родительскими классами в ObjectsClassesEnumsStructs.playground
Создайте подкласс Circle класса NamedShape, который принимает радиус и имя в качестве аргументов в их инициализатор. Реализуйте метод area() и метод simpleDescription() класса Circle.

Задание №2
Из mobile-ios-swift-course-2018/lectures/lecture1/02 - Enumerations and Structures.playground скопируйте перечисления Rank, Suit и структуру Card в ObjectsClassesEnumsStructs.playground

  1. Напишите функцию, сравнивающую два Rank значения, с помощью сравнения их исходных (raw) значений.
  2. Добавьте метод color() для Suit, который возвращает "black" для spades (пики) и clubs (трефы), и возвращает "red" для hearts (червы) и diamonds (бубны).
  3. Добавьте метод для Card, который бы создал полную колоду карт, с одной картой из каждой комбинации ранга (rank) и масти (suit).

Задание №3
В ObjectsClassesEnumsStructs.playground создайте:

  1. Струкуру Command с полем message (тип String) и методом execute который в консоль выведет значение поля message
  2. Перечисление Mode с кейсами idle, work, error
  3. Класс Robot с
    • полями mode (тип Mode), commands (тип массив Command)
    • инициализатором с одним аргументом устанавливающим поле commands, и присваивающий полю mode значение idle
    • методом start, который в случае, если массив commands пуст, устанавливает в mode значение error, в ином же случае устанавливает в mode значение work
    • методом go, который в случае,
      если полю mode присвоено значение idle, выведет в консоль "robot is off",
      если work - "robot is working" и при этом вызовет метод execute у каждого элемента из массива commands,
      если error - "robot is broken"
  4. Несколько (3-5) подклассов класса Robot с инициализатором не принимающим аргументов, но передающим массив нескольких (3-5) стуктур Command в инициализатор класса-родителя.
  5. По одному экземпляру из подклассов класса Robot и вызовите у них методы go, start в таком порядке, чтобы роботы успешно справились с выполнением своих Command-заданий.
  6. Подкласс класса Robot, вызов метода go у которого выведет в консоль "robot is broken".
  7. Экземпляр вышеупомянутого класса и вызовите у него методы для вывода в консоль "robot is broken".

Homework 4

Описание
Домашние задание состоит из нескольких частей:

  • 000 - для прочтения
  • 001 - практика
  • 010 - подсказки

Цель - изучить на практике MVC и закончить функционал игры RememberMe.

000
Прочитать из книги Apple Development with Swift

  1. Раздел 4.3 Model View Controller (стр. 559 - 573)

001

  1. Добавить кнопку "New game" на UI, по нажатию на которую текущая игра заканчивается и начинается новая игра.
  2. Добавить перемешивание карт в логике модели "Remember" при инициализации.
  3. Добавить в игру концеп темы, которая определяет набор emoji, цвет карты и цвет рубашки, из которых выбраны карты. Все emoji в данной теме связаны с данной темой.
  4. Добавить не менее 6 различных тем и выбирать случайную тему каждый раз, когда начинается новая игра.
  5. Реализация должна позволять добавлять новую тему в несколько строчек кода.
  6. Добавить label, где будет score игры. Необходимо добавить 2 балла за каждое совпадение карт и начислить пенальти (-1 балл) за каждую ранее увиденную карту, которая участвует в несоответствии.
  7. Отслеживание счета (flip) переворота карты не корректно хранить в контроллере, необходимо это исправить.
  8. UI должен хорошо выглядеть на iPhone X.

010

  1. Меньше кода - меньше багов.
  2. Если в функции более 40 строк кода, значит вы что-то делаете не так.
  3. Примеры тем: животные (🐷🐼🐭), спорт (🥎⚾️🏈), лица (😎🤣😂).

Homework 2

Реализовать однонаправленный и двунаправленный список.

Эти списки должны реализовывать (конфирмить) ваш протокол LinkedList.

Интерфейс (список функций и полей) у протокола и реализациях протокола - на ваше усмотрение, но должна быть возможность добавить и удалить элемент из списка.

Эти списки должны иметь возможность работать с любыми типами данных (нужно использовать generic`и).

В качестве узлов (nodes) использовать объекты структур, если у кого-то возникают проблемы с структурами - тогда можно использовать класс.

В вашей реализации должна быть, как минимум, одна функция, которая может возвращать ошибку.

Также необходимо написать extension к LinkedList, который будет давать возможность добавлять в список все элементы из другого списка.

Homework 7

Для прочтения:
UIViewController
UIScrollView

Практическое задание:

Создать папку homeworks/[name.surname_githubusername]/homework_7

Задание №1

  1. В папке homework_7 создать проект с названием LifeLogging, выбрав шаблон Single View App.
  2. В нем создать наследника UIViewController, назвав его LogLifeViewController.
  3. У LogLifeViewController переопределить каждый метод отвечающий за жизненный цикл UIViewController-а, добавив print, который выводил бы одной строкой эмоджи (где это уместно/имеет ассоциацию с методом), имя класса view controller-a, имя вызываемого метода.
  4. У созданного из шаблона класса ViewController установить LogLifeViewController в качестве родительского класса, чтобы увидеть в работе LogLifeViewController.
  5. Запустить проект, убедиться что жизненный цикл ViewController-а выводится в консоль.

Задание №2

  1. Скопировать проект из lecture7/NextTextField в папку homework_7.
  2. Добавить функциональность для решения проблемы перекрытия полей ввода клавиатурой.
  3. В случае если клавиатура показана, по тапу на области вне полей ввода (включительно по кнопке Signup) клавиатура должна прятаться.
  4. Опционально: при нажатии на клавиатуре клавиши Next, реализовать переход на следующее поле ввода (в случае последнего поля - переход на первое).

Homework 8

Необходимо создать приложение из двух скринов, которое будет отображать юзеров из гитхаба.
И так. Первый скрин содержит в себе простой UITextField, в который нужно ввести юзернейм гитхаб юзера (верстка на ваше усмотрение, тексфилд по центру экрана подойдет). После ввода имени открываем второй скрин.
Второй скрин отображает информацию о гитхаб юзере. Скрин должен поддерживать портретный и лендскейп режимы для айфона.
Примерерная верстка будет отображена на изображениях ниже.
Примеры того как получить необходимую информацию о юзере:
https://api.github.com/users/walkline
https://api.github.com/users/walkline/repos

Homework 6

Для прочтения:

  1. Basic. Segues and Navigation Controllers, стр. 332 - 352.
  2. Basic. Tab Bar Controllers, стр 358 - 370.
  3. Basic. UINavigationController from docs
  4. Basic. UITabBarController from docs
  5. Advanced. Структура папок в проекте.
  6. Advanced. High Perfomance VK Feed with frames.

Практическое задание:

Задача: реализовать UI и navigation часть приложения github client.

  • Создать папку homeworks/[name.surname_githubusername]/homework_6
    В этой папке создаем проект для iOS, выбрав шаблон Single View App и назвав его MA-github-client.
  • Приложение должно хорошо выглядеть на iPhone Xs (использовать frame или auto layout - по желанию и возможностям).
  • Xib, Storyboard или code only, а так же дизайн - по желанию и личному вкусу.
  • Должен быть экрана авторизации и таб бар с тремя item-ами.
  • Каждый item - отдельный navigation controller.
  • Главные экраны для каждого item-а: repositories, search, profile.
  • Экран repositories должен состоять из 3 view, которые использую mock обьекты с данными. View в дальнейшем буду переиспользоваться.
  • При нажатии на view, отобразить следующий view controller, с детальной информацией о репозитории, который был выбран, при этом таб айтемы - скрывать.
  • Экран поиска состоит из поля поиска и элементов.
  • После введения двух произвольных символов, отобразить две view (переиспользовать с экрана repositories).
  • При нажатии на view - отобразить экран с деталями.
  • Экран профиля состоит из аватарки и деталей (никнейм, полного имени, био, email, страна).
  • Поля можно редактировать (изменить имя, био, страну).

Бонус (Advanced):

  • Добавить custom-ную анимацию при переходе между экранами. При push - одну, при pop - другую.
  • Изменить поведение кнопки back таким образом, что бы на всех экарна был запрос на подтверждение о переходе назад (посредством alert controller-a или action sheet-a).

Homework 3

Описание
Домашние задание состоит из нескольких частей:

  • 000 - для прочтения
  • 001 - практика
  • 010 - бонусное задание

Цель - повторить пройденое на лекции, узнать возможности UIKit-a и способы реализации интерфейса.

000
Прочитать из книги Apple Development with Swift

  1. Раздел 2.7 Introduction to UIKit (стр. 187 - 204)
  2. Раздел 2.8 Displaying Data (стр. 207 - 219)
  3. Раздел 2.9 Controls In Action (стр. 220 - 237)

Прочитать из документации Apple

  1. Views and Controls
  2. UIView
  3. Windows and Screens
  4. View Controllers без подразделов
  5. UIViewController
  6. UIStoryboard

001

  1. Повторить проект игры RememberMe как это было на лекции. Не копируйте код, напишите и реализуйте все заново.
  2. Создайте новый проект игры, как это было на лекции при этом: не используйте IBOultlet и IBAction, все елементы, их параметры и Action-ы задайте в коде, Storyboard используйте только для инициализации ViewController-a, как стартовую точку проекта.

011
Модифицируйте проект из пунтка 2 таким образом, что бы не использовать Storyboard или Xib вовсе, все создайте в коде.

Homework 5

Для прочтения:
UIView
CoreGraphics

Практическое задание:

  1. Создать папку homeworks/[name.surname_githubusername]/homework_5
    В этой папке создаем проект для iOS, выбрав шаблон Single View App и назвав его MALogo.
  2. Создать наследника UIView назвав его MALogoView.
  3. MALogoView должен отображать обновленную версию логотипа MastersAcademy, используя CoreGraphics. Результат должен быть достигнут путем вызова методов addLine(to:), move(to:) и т. п. у CGContext или UIBezierPath.
  4. В Main.storyboard view ViewController-а нужно указать использование MALogoView (через Identity Inspector) вместо стандарного UIView или перетянуть из Library объект View во view ViewController-а и уже ему присвоить MALogoView или добавить MALogoView програмно во view ViewController-а.
  5. Логотип должен находиться в центре экрана и быть размером не менее 188х200.
  6. Опционально при старте приложения можно добавить анимацию появления логотипа. Эффект появления на ваш выбор.

List of picked projects

  1. A place for rest, igor.medelyan_imedelyan
  2. Find film for an evening, volodymyr.lavryk_vo0ne
  3. ЖКХ Report, vadim.albul_devVadimAlbul
  4. Giveaway Helper (Insta) or App for the restaurant, artem.migovich_migovich
  5. Music Player, denys.viitenko_danviitenko

Homework 0

Описание
Домашние задание состоит из нескольких частей:

  • 000, 001 - практика
  • 010 - теория
  • 011 - бонусное задание

000

  1. Зарегистрироваться в github
  2. Форкнуть репозиторий
  3. Склонировать себе форкнутый репозиторий
  4. Внутри папки homeworks создать папку по шаблону (name.surname_githubusername)
  5. В этой папке создать папку для домашней работы - homework_0
  6. Создать README.md в папке homework_0, в него записать версии с консоли xcodebuild -version, swift -version, xcode-select -version
  7. Сделать pull request в главный репозиторий Masters Academy
  8. Добавиться в Join the chat at https://t.me/joinchat/E3gfslVKTCqZKYTYrJ5JlQ чат. Там будет вся информация по занятиям, а так же все обсуждения по курсу

001

  1. В папке homework_0 создать playground с именем - task_1
  2. Огласить и инициализировать переменные всех фундаментальных типов которые сможете найти (до 20)
  3. С помощью функции print поочередно вывести обьявленные переменные в консоль
  4. Создать три цикла (while, while-repeat, for) и с помощью функции print вывести значения от 1 до 10 в консоль
  5. Создать экземпляры структуры String наибольшым количеством способом которые сможете придумать (начинайте с String(), искать по ключевым словам initialization, String, swift)
  6. Создать пермененную типа Int и switch который с помощью функции print выведет значение в консоль, если значение в диапазоне от 5 до 20 (включительно) или более 35

010
Задание на прочтение из Swift programming language

  1. Важно и (возможно) сложно для понимания
    1.1 Optionals
    1.2 Accessing and Modifying a String
    1.3 Customizing Initialization
  2. Важно и не столь сложно для понимания
    2.1 Type Safety and Type Inference
    2.2 Numeric Type Conversion
    2.3 Nil-Coalescing Operator
    2.4 Range Operators
    2.5 Counting Characters
    2.6 Substrings
    2.7 Mutability of Collections
    2.8 Arrays
    2.9 Dictionaries
    2.10 Switch
    2.11 No Implicit Fallthrough
    2.12 Break
    2.13 Function Argument Labels and Parameter Names
    2.14 Specifying Argument Labels

011

  1. Написать любой код который приведет к крешу playground-а (выводу error: Execution was interrupted \ Fatal error). Ключевые слова: crash, stack trac, program termination, fatal error, swift
  2. Напишите самый короткий код который приведет к крешу playground-а

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.