Swift 2.0 и iOS 9 уже на пороге

Меньше, чем через неделю будет объявлено о выходе официальных (или Gold Master) версий Swift 2.0iOS 9 и Xcode 7. Сейчас действует бэта 6 версия этого программного обеспечения,  Поэтому я решила на своем сайте обновить демонстрационные примеры, сопровождающие замечательный стэнфордский курс CS193P WINTER 2015 «Developing iOS 8 Apps with Swift» до  Swift 2 для запуска их в Xcode 7. Самое интересное в этой новости заключается в том, что из Xcode 7 вы можете запустить эти демонстрационные примеры на своем устройстве (или поделится с друзьями) совершенно бесплатно — для этого не нужно иметь сертификат разработчика Developer Account,  стоимостью 99 $/год. Начиная с Xcode 7 политика Apple по отношению к разработчикам изменилась. Они хотят привлекать к разработке приложений более молодых программистов. Но не нужно ждать выхода официальных версий  — уже сейчас Xcode 7  (а вместе с ней Swift 2 и iOS 9) находятся в публичном доступе здесь.

Надо отметить, что в 2015 году на стэнфордских курсах наряду с демонстрационными примерами для первых лекций, где не требуется реальный прибор (iPhone или iPad) и достаточно симулятора, последние лекции сопровождаются очень интересными демонстрациями с привлечением реальных iPhone или iPad:

Читать далее

Задание 5 cs193p Winter 2015 Анимация (игра Breakout)

Текст Задания 5 на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 5″.  
Текст Задания  5 на русском  языке размещен в PDF — файле

Задание 5 iOS 8.pdf

Для выполнения Задания 5 необходимо освоить материал Лекции 12 и Лекции 13.
В качестве прототипа кода для Задания 5 можно использовать код приложения «Dropit«, полученный на Лекции 12, который доступен на сайте Stanford.

Результаты выполнения заданий можно посылать на форум Swift[ru] для обсуждения.

В UICollectionView в iOS 9 теперь легко передвигать ячейки.

Я пропустила это на WWDC 2015, но  iOS 9 UICollectionView теперь поддерживает перегруппировку ячеек стандартными API с помощью встроенных жестов long press и pan. Код для Swift 2.0 и Xcode 7 на Github. Читать далее

Задание 4. Решение — UICollectionView с расположением ячеек типа Pinterest.

Класс UICollectionView отличается UITableView наличием свойства UICollectionViewLayout, которое отвечает за расположение (layout) ячеек в двухмерным пространстве, не заботясь о содержимом этих ячеек. По умолчанию работает расположение (layout)  UICollectionViewFlowLayout, которое действует наподобие размещения текста по строкам слева направо с переносом на другую строку. Именно этот layout мы использовали при выполнении дополнительного пункта 6 Задания 4. Но есть очень привлекательное расположение ячеек, которое организует их по столбцам таким образом, чтобы они как можно плотнее заполняли все пространство. Это так называемый стиль Pinterest или еще его называют «анти-Тэтрис» или  Waterfall (водопад). Ниже на рисунке цифрами показан порядок заполнения ячеек.
Screen Shot 2015-07-13 at 8.41.29 PM
Алгоритм расположение очень прост: каждая следующая ячейка располагается в столбце, наименее занятом по вертикали,  c соответствующим Aspect ratio.  Класс CHTCollectionViewWaterfallLayout, реализующий этот алгоритм расположения ячеек в Collection View представлен в Github. Давайте попробуем использовать его в решении Задания 4. Читать далее

Задание 4. Решение — дополнительный пункт 6.

Screen Shot 2015-07-13 at 1.36.03 PM

Это третье и последнее продолжение решения Задания 4.
Начало находится в посте Задание 4. Решение — обязательные пункты 1 — 4. 
Первое продолжение находится в посте Задание 4. Решение — обязательные пункты 5 — 10. 
Второе продолжение находится в посте Задание 4. Решение — дополнительные пункты 1 — 5. 
Текст Задания  4 на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 4″.  Текст Домашнего задания на русском  языке доступен на 

Задание 4 iOS 8.pdf

Необходимо освоение Лекции 7, Лекции 9Лекции 10,  и Лекции 11
В этом посте подробно описывается выполнение дополнительного пункта 6.
Код для Swift 1.2 находится на Github. Код для Swift 2.0 находится на Github.

Пункт 6 дополнительный

Добавьте некоторый UI элемент, который показывает новый ViewController, отображающий UICollectionView всех первых изображений (image) (или, если хотите, всех images) во всех твитах, которые удовлетворяют условиям поиска.  Когда пользователь кликает на изображении (image) в этом UICollectionView, “переезжайте” (segue) на View Controller, который покажет этот твит.

Читать далее

Задание 4. CS193P Winter 2015. Решение — обязательные пункты 1- 4.

Screen Shot 2015-07-14 at 8.43.44 AMТекст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 4″.  Текст Домашнего задания на русском  языке доступен на 

Задание 4 iOS 8.pdf

 Для выполнения этого Задания необходимо освоение  Лекции 9Лекции 10 и Лекции 11.
В этом посте подробно описывается выполнение обязательных пунктов 1-4.
Код для Swift 1.2 находится на Github. Код для Swift 2.0 находится на Github.

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

Усовершенствуйте приложение Smashtag, полученное на лекции, в части выделения  (разными цветами каждого)  hashtags, urls и user screen names, упомянутых в тексте твита (они известны как “mentions” — меншены). Заметьте, что эти mentions уже обнаружены для вас в каждом твите и представлены как [IndexedKeyword]s в классе Tweet в поставляемом коде Twitter.

Читать далее

Задание 4 cs193p Winter 2015 Smashtag (Выборка данных из Twitter)

Текст Задания 4 на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 4″.  
Текст Задания  4 на русском  языке размещен в PDF — файле

Задание 4 iOS 8.pdf

Для выполнения Задания 4 необходимо освоить материал Лекции 10 и Лекции 11.
В качестве исходного кода для Задания 4 используется код приложения «Smashtag«, полученный на Лекции 10. Код для Демонстрационного примера «Smashtag» и вспомогательный класс «Twitter» доступны на сайте Stanford.
Пол Хэгерти использовал актуальный на тот момент Swift 1.1. Вариант демонстрационного примера «Smashtag» и вспомогательного класса «Twitter»  для Swift 1.2 выложен на том же сайте   Stanford.

Результаты выполнения заданий можно посылать на форум Swift[ru] для обсуждения.

Задание 3. Решение — дополнительные пункты 4, 5 и 6. Окончание.

Screen Shot 2015-05-12 at 8.50.24 PM

Это решение Задания 3 — дополнительные пункты 4, 5 и 6. Обязательные пункты Задания, дополнительные пункты 1, 2 и 3, а также ссылки на текст самого Задания 3 можно посмотреть здесь:

Задание 3. Решение — обязательные пункты.
Задание 3. Решение — дополнительные пункты 1, 2 и 3.

Для окончательного решения код для Swift 1.2 находится на Github. Для Swift 2.0 код можно посмотреть на Github.

Читать далее

Задание 3. Решение — дополнительные пункты 1, 2 и 3

Screen Shot 2015-05-10 at 9.35.51 PM

Это решение Задания 3 — дополнительные пункты 1, 2 и 3. Обязательные пункты Задания, а также ссылки на текст самого Задания 3 можно посмотреть:

Задание 3. Решение — обязательные пункты.

Для данного поста код для Swift 1.2 находится на Github. Полное решение для Swift 2.0 можно посмотреть на Github.

Пункт 1 дополнительный

Поймите, как работают Instruments,  анализируя производительность жестов  panning и pinching в вашем графическом View. Что делает перемещение графика по экрану таким “вялым”? Объясните в комментариях к вашему коду, что вы обнаружили и что с этим можно сделать.

Вместо запуска приложения запускаем Instruments для приложения с помощью  ⌘I и выбираем Time Profiler.
Screen Shot 2015-05-08 at 8.28.15 PM
Читать далее

Задание 3. Решение — обязательные пункты

Screen Shot 2015-05-16 at 9.24.07 AM

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 3″.  Текст Домашнего задания на русском  языке доступен на 

Задание 3 iOS 8_new.pdf


Для выполнения этого Задания необходимо освоение  Лекции 5Лекции 6Лекции 7 и Лекции 8.
В подсказке 4 Задания 3 предлагается некоторая методика разработки данного приложения, но каждый волен сам выбирать, какую часть приложения создавать в первую очередь. Поэтому обязательные пункты Задания 3 могут выполняться не в строгом порядке.

Код для Swift 1.2 находится на Github. Полное решение для Swift 2.0 можно посмотреть на Github.

Читать далее