Лекция 6 CS193P Spring 2016 — множественные MVCs, Segues, FaceIt и View Controller

В Лекции 6 рассматриваются две главные темы :

  1. множественные MVCs, segues
  2.  «жизненный цикл» View Controller.

Лекция 6 продолжает тему множественных MVCs, начатую в конце лекции 5, где было показано как можно комбинировать MVCs с помощью Tab Bar Controllers, Split View Controllers и Navigation Controllers и как подсоединять их на storyboard. Но одно дело подсоединить их на storyboard, и совсем другое, когда  будет работать пользователь, нажимая на кнопки и и другие элементы UI, перемещаясь между различными MVCs.

Читать далее

Всемирная конференция разработчиков WWDC 2016. Что впечатлило.

Screen Shot 2016-06-14 at 12.14.23 PM

Apple анонсировала множество новых возможностей на своей ежегодной конференции разработчиков WWDC 2016. Я хочу поделиться с Вами некоторыми из них, которые, по-моему,заслуживают внимания….

— Swift Playgrounds с iOS 10, теперь вы можете писать Swift код прямо на вашем iPad. Важно заметить, что новые приложения  playgrounds — это не Xcode. Правда вы можете открыть в этом приложении Swift Playgrounds, разработанные в Xcode, путем «сбрасывания» AirDrop ваших файлов на iPad. Конечно, с помощью этого приложения вы не сможете создать полностью готовое приложение на вашем iPad. Но это, возможно, мотивирует Apple в сторону разработки iOS приложений на iPad. Специально для  Swift Playgrounds в клавиатуру добавили дополнительный ряд символов. Я уверена, что это новое приложение привлечет больше людей в прекрасный мир Swift! Приложение появится осенью и будет бесплатным.

— SiriKit  Это долгожданная новость! Apple анонсировала, что вы можете интегрировать Siri в код вашего приложения. Например, вы могли бы в своем приложении Калькулятор не набирать операнды и операции на клавиатуре, а сказать Siri: «Рассчитай-ка мне функцию sin(M) + M для M = π и построй график.»

— Xcode 8 Здесь множество обновлений, но больше всего впечатляют инструменты отладки. Если ваше приложение «ест» много памяти, то  Xcode теперь предоставляет вам карту для просмотра того, как все объекты в вашем приложении связаны. Демонстрация этого — просто сногсшибательная. Теперь Xcode  8, как и другие IDEs, поддерживает подключение  plugins (extensions).

-Swift 3 Chris Lattner (создатель Swift) сказал, что главная цель этой версии Swift — стабильность. Те, кто использует Swift на протяжении последних двух лет, знает, что он изменился ЗНАЧИТЕЛЬНО. Все эти изменения были сделаны, чтобы изобрести наилучшую версию Swift. Надеюсь, что Swift 3 будет самой стабильной версией Swift и что новые версии не будут рушить существующий код. Кстати, Xcode 8 поставляется с двумя версиями Swift: Swift 2.3 (очень небольшие изменения по сравнению со Swift 2.2) и Swift 3, так что нет принуждения : вы сами можете решить, когда вам переходить на Swift 3.

Демонстрационные примеры и Задания для курсов iOS 9 и iOS 8 будут адаптированы к iOS 10 и Swift 3, когда появится официальная версия.

 

Задание 2 cs193p Spring 2016 «Умный» Калькулятор. Решение. Обязательные и дополнительные пункты.

Содержание

Текст Домашнего Задания 2 на английском языке доступен на  iTunes в пункте “Programming: Project 2: Calculator Brain″На русском языке вы можете скачать здесь:

Задание 2 iOS 9.pdf

Задание 2 iOS 9.pdf

Задание 2 расширяет возможности калькулятора Calculator из Задания 1, позволяя ему вводить “переменные” и выполнять операцию Undo. Кроме того, вам необходимо внести в код все изменения, сделанные на лекции 3 (переменную program типа Property List и атрибуты управления доступом).  Кроме того, выполнение всех его пунктов позволит вам овладеть навыками работы с такими синтаксическими конструкциями как enum, Dictionary, Array, кортежи, Optional, String, Наблюдатели Свойств. 

Код Задания 2 представлен в двух вариантах:

  1. переменная как операнд — на Github для Xcode 7 и Swift 2.2.
  2. переменная как операция  — на Github для Xcode 7 и Swift 2.2.

Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

Ниже представлено решение всех обязательных и дополнительных пунктов Задания 2.

Читать далее

Лекция 5 CS193P Spring 2016 — Interface Builder, FaceView Controller, Жесты и Множественные MVCs

Как видно из названия,  Лекция 5 охватывает множество важных тем: дополнительные возможности Xcode по отображению пользовательских изображений непосредственно на storyboard, взаимодействие Модели и Controller с целью изменения View, жесты, множественные MVC и способы их создания.

В начале Лекции 5  продолжается работа над приложение FaceIt, добавляя новые элементы на наше «лицо» — «брови» и возможность «хмурить» их, возможность открывать и закрывать «глаза», что увеличивает маневренность для отображения различных эмоций на нашем «лице».

Показано, как с помощью атрибутов  @IBDesignable и @IBInspectable можно получать и настраивать пользовательские изображения непосредственно на storyboard. Как заставить пользовательский UIView «переписываться» при изменении его public параметров.

Читать далее

Лекция 4 CS193P Spring 2016 — Views

Лекция 4  полностью посвящена Views. Views — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 5. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.

Читать далее

Лекция 3 CS193P Spring 2016 — Больше Swift и Фреймворк Foundation.

На Лекции 3 профессор говорит по большей части о слое, который лежит под слоем пользовательского интерфейса (UI). А именно о языке Swift и о фреймворке Foundation, который “живет” в верхней части Core Services. В этой лекции вообще нет ничего о UI. 

Лекция начинается с подробного рассказа о том, что представляет собой Optional и как интерпретировать такой «синтаксический сахар» для него, как ?, !  и ??, а также «цепочки» Optional. Кратко представлены кортежи (tuples) и диапазоны  Range<T> .

Затем анализируются основные структуры данных в Swift : class, struct, enum. Обсуждается их сходство и различия. Особенное внимание уделено семантике value type и reference type. Подробно представлен синтаксис именования параметров функций в Swift. Рассматриваются самые «крутые» возможности свойств: наблюдатели  willSet{} и didSet {} и отложенная инициализация lazy. Уделено должное внимание массивам Array<T>,  словарям Dictionary <Key, Value>, строкам String и их интересным методам.

Читать далее

Задание 1 cs193p Spring 2016 Калькулятор. Решение. Обязательные и дополнительные пункты.

Содержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 1: Calculator″На русском языке вы можете скачать здесь:

Задание 1 iOS 9.pdf

Начинаем выполнять Задание 1 с кода, полученного в конце Лекции 2. Профессор настоятельно рекомендует не копировать код в первых 2-х Лекций, а непосредственно печатать, так как это даст хороший опыт освоения среды разработки Xcode. Я все-таки привела на Github код демонстрационного примера, соответствующий окончанию Лекции 2. Это позволит совсем начинающим не «застрять» на самом первом этапе.

Ниже приводится решение всех пунктов задания для тех, кто хочет сравнить свой результат с моим, и окончательный код  Задания 1 на Github.

В дополнение к Заданию 1 решаются вопросы работоспособности приложения на реальном устройстве в разных Регионах и построения адаптивного интерфейса, когда UI выглядит принципиально по-разному в портретном и ландшафтном режимах.

Для отдельных пунктов Задания есть релизы на Github для Xcode 7 и Swift 2.2.:
обязательные пункты 1-3, дополнительный 4,
обязательные пункты 4-8, дополнительный 4,
 дополнительные  1-2,
 дополнительный  3
с региональной точкой 
адаптивный интерфейс
отдельный Action для кнопки С
программируемый калькулятор — Лекция 3
глобальный formatter c помощью мгновенно выполняемого замыкания 

Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

Пункт 2 обязательный

Ваш калькулятор (calculator) уже умеет работать с числами с плавающей точкой (например, если вы последовательно будете нажимать на клавиши 3 ÷ 4 =,  то он покажет правильный результат  0.75), тем не менее, пока нет возможности ввести число с плавающей точкой. Это надо исправить. Разрешите вводить только правильные числа с плавающей точкой (например,  “192.168.0.1”  — неправильное число с плавающей точкой). Вам нужно добавить новую кнопку с точкой “.”. В этом задании не беспокойтесь о точности и значащих цифрах (включая нижеприведенные пункты задания).

Прежде всего надо сделать небольшое замечание относительно точки «.» как десятичного разделителя.

Читать далее

Лекция 2 CS193P Spring 2016 — Применяем MVC.

Screen Shot 2016-05-05 at 8.38.58 PM

На Лекции 2 профессор подробно объясняет использование паттерна MVC для разработки iOS приложений.

Затем следует продолжение демонстрационного приложения Калькулятор, начатого на прошлой лекции. Происходит разделение классов Модели и классов, обслуживающих View Controllers. Появляется новый класс CalculatorBrain, который является классом Модели и имеет свои особенности. На примере этого класса профессор показывает, как проектировать класс, отталкиваясь от его public API. Используются все возможные в  Swift структуры данных : класс class, перечисление enum и структура struct. Подчеркиваются основные их отличия. Очень подробно рассказывается об ассоциированных значениях enum и Optionals, которые также являются enum.

Читать далее

Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 2)

screen-shot-2016-11-05-at-3-16-24-pm

Лекция 1 CS196P Весна 2016 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:
Первая часть Лекции 1 CS193P Весна 2016 — 0 — 60 минута находится
здесь
,
Вторая часть Лекции 1 CS193P Весна 2016 —  60 — 77 минута — находится в этом посте.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

—————— 60-ая минута Лекции ——————

Так что идем дальше и добавляем дисплей на наш пользовательский интерфейс.
Будем добавлять дисплей сверху. Мы хотим что-то подобное тому, что на стандартном калькуляторе, пришедшим вместе с операционной системой  Mac, и чтобы в правом углу был «0», но, возможно, с другими цветами.
Я возвращаюсь в Область Утилит в окно Палитра, откуда я доставал свои кнопки для цифровой клавиатуры. Теперь я буду перетягивать метку — Label, которая представляет собой  readonly текст.

Screen Shot 2016-04-25 at 8.40.47 AM

Пользователь не может касаться метки и затем печатать туда что-то с помощью маленькой клавиатуры на iPhone. Это  readonly текст, и именно его мы хотим иметь на нашем калькуляторе.

Читать далее

Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 1)

Screen Shot 2016-04-21 at 11.17.38 AM
Лекция 1 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:

Первая часть — 0 — 60 минута находится в этом посте,
Вторая часть — 60 — 77 минута — здесь.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

————————————————————————————————-

Добро пожаловать на курс Стэнфорда CS193P. Это версия Spring 2016, и сегодня я собираюсь рассказать вам очень быстро о том, что собой представляет этот курс, чтобы вы были уверены, что находитесь в нужном месте.
Screen Shot 2016-04-21 at 3.24.03 PM

Сегодня

  • О чем этот курс?
    • Почему я здесь?
  • Предварительные требования
    • Вы должны быть уверенным объектно-ориентированным программистом.
  • Обзор iOS
    • Что находится в iOS?
  • Покажи мне!
    • Лучше один раз увидеть демонстрационный пример, чем сто раз услышать.

Я буду говорить о предварительных требованиях, потому что это супер важно для успешного прохождения этого курса.
Затем я дам вам очень короткий обзор того, что представляет собой iOS. Большую часть этого вы знаете, потому что у вас есть iPhones или iPads или еще что-то подобное, поэтому я не буду тратить на это много времени.
И дальше мы с вами погрузимся в очень большой демонстрационный пример, который будет заключаться в построении нашего первого приложения. У нас только 10 недель на изучение iOS. Это очень короткий промежуток времени для изучения такой супер мощной системы.

Что мы будем изучать в этом курсе?

Читать далее