20.01.2021

Для чайников swift: Уроки языка Swift для начинающих: бесплатные видео для обучения программированию

Уроки языка Swift для начинающих: бесплатные видео для обучения программированию

Уроки языка Swift для начинающих: бесплатные видео для обучения программированию

Компилируемый язык программирования Swift создан компанией Apple, и предназначен для разработчиков софта на платформе iOS и macOS. На нем делаются приложения и программы. Свифт прост в изучении, и стремительно развивается.

 

Подборка бесплатных видео уроков для начинающих с нуля на сайте Все Курсы Онлайн позволит освоить начальные навыки работы программирования на языке Swift и написать первые программы в домашних условиях.

Основы

Для работы понадобится OS X Yosemite и Xcode. Вначале создается площадка, на которой будет разрабатываться весь проект. Слева пишется код программы, справа — ход ее выполнения. В написании кода используются различные данные, которые записываются в строки. Они могут целочисленные, с дробной частью или же текстовые. Чтобы делать какие-либо операции, информацию необходимо хранить в области памяти. Если в эту область будут перезаписываться данные, то она называется переменной. Если же только использовать в готовом виде, то это — константа. 

 

Базовые понятия

В уроке изучаются основные моменты языка и его функции. Устанавливается специальная программа, в которой можно писать код и сразу же выводить на консоль. Софт имеет свои библиотеки, а также возможность подгружать пользовательские. Все они подключаются в самом начале, перед основным кодом. Рассматриваются различные типы данных, переменные, константы, циклы, кортежи, условные операторы (работают с определенными условиями), массивы (используются индексы), словари (используются ключи) и многие другие вещи. 

 

iOS разработка

На вебинаре разбираются особенности iOS разработки и карьерные перспективы в этой сфере. Приложения для Iphone и Ipad сейчас пользуются большой популярностью, поэтому разработчики в этой сфере являются востребованными специалистами. Разбирается структура iOS-приложения: от Core до UI. Информация сначала подается в виде теоретической базы, которая подкрепляется практическими примерами. Показывается начало работы в Xcode: playground, IB, simulator. Также дается краткий обзор языка Swift: синтаксис, плюсы и минусы, паттерны, solid-принципы; классы, структуры. 

Рабочая среда Xcode 10

В видео показана работа с Xcode — рабочей среды для разработки программ. Рассматриваются ее основные настройки, использование и структура. Также демонстрируется запуск симулятора iPhone, и вывод информации в консоль. Рассказывается о горячих клавишах, которые можно использовать для комментирования кода, перехода к нужной строке или поиска необходимого файла. В конце видео даются несколько домашних заданий, выполнив которые можно закрепить полученные знания.

 

Создание переменной

В уроке раскрываются самые азы программирования, без которых невозможно обойтись в дальнейшей работе. Здесь узнаете о том, как объявить переменную, дать ей имя и добавить в нее значение. Познакомитесь с конструкцией ее назначения — var имя переменной = значение. Есть два варианта написания имени, если оно состоит из двух слов: с маленькой буквы и два слова вместе или же тоже с маленькой, но слова пишутся через нижнее подчеркивание. Имя обычно прописывается латиницей. 

Приложение

Пошаговый видеоурок по созданию софта для iOS будет полезен начинающим разработчикам. Здесь показаны все этапы от установки специального программного софта Xcode до создания первого проекта. В него встроены симуляторы Iphone, Ipad, которые используются для проверки работы кода. Здесь есть панель управления проектом. Можно добавлять поля для вывода текстовой информации, кнопки. После добавления элементов их необходимо запрограммировать через Assistant Editor. 

 

Приложение «Погода»

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

Калькулятор. Проработка дизайна

В уроке показывается программирование простенького калькулятора на Swift и его дизайн в Xcode. Состоит из трех частей. В первой части даются базовые знания о языке, его использовании, установке необходимого программного комплекта, а также начале работы (открытие проекта, установка языка, знакомство с интерфейсом, создание дизайна кнопки). Во второй — для кнопок добавляется функционал, позволяющий отображать их значение на экране. В последней добавляют математические операции, которые выполняются при на нажатии на те или иные математические символы.

 

 

Базовые типы

В уроке разбираются основные типы данных, которые используются при определенных переменных. Это те категории, которые присущи множеству значений. На примерах построения кода, можно познакомиться с ними. Могут быть числовые типы, с плавающей запятой, символы, десятичные и логические, ссылочные. Они прописываются в случае, когда используются переменных разных типом и производятся какие-либо действия между ними. В других ситуациях типы не пишутся. 

Фреймворке SpriteKit

В видео показано создание простой игры на языке Swift и фреймворке SpriteKit от Apple, который включает библиотеку классов и другие инструменты для создания двухмерных игр. Из ролика узнаете о его потенциале и сферах использования; положительные и отрицательные стороны технологии; особенности устройства; базовые возможности встроенного симулятора физики. 

Большая популярность Apple требует все больше новых программ, и поэтому разработчики в этой сфере сегодня очень востребованы.

 

Swift обучение — курс уроков обучения языку Свифт для начинающих на itProger

Представляем вам большой видео урок по изучению языка Swift от переменных и до ООП. За урок вы изучите основы языка Swift и научитесь работать в среде программы Xcode. Вами будут изучены все основные моменты, а также весь синтаксис языка Свифт.

Полезные ссылки:

Информация про Swift

Язык Swift был разработан компанией Apple в 2014 году. Считается очень молодым языком, но благодаря мощной поддержки со стороны Apple стал популярным практически с первого дня выхода. 

Swift позволяет писать программный код для создания игр и приложений под всю продукцию компании Apple, а именно:

  • Планшеты — iPad;
  • Телефоны — iPhone;
  • Компьютеры — MacBook и iMac;
  • Часы — Apple Watch;
  • ТВ приставки — Apple TV.
Язык Objective C

До появления языка все программы под Apple были написаны на основе языка Objective C. Со дня выхода языка Swift рейтинги языка Objective C сильно упали и на данный момент практически никто не изучает и не пишет новые приложения на основе этого языка.

Так происходит по той причине, что Apple сильно продвигает язык Swift, который объективно проще, удобнее и более функционален нежели его предшественник. 

Изучать язык Objective C мы не рекомендуем, ведь никакой новой нужной для вас информации вы не подчеркнете при изучении этого устаревшего языка. 

План курса

Изучение языка Swift не занимает много времени, так как компания Apple постаралась сделать его максимально простым и удобным в использовании. Он имеет простой и логичный синтаксис, который легко запомнить и несложно использовать.

В курсе мы отделим лишь один большой урок на изучение языка Swift. За урок вы изучите весь необходимый синтаксис языка и далее начнете разрабатывать приложения на его основе. 

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

Исходный код

Структуры

struct Square {
    var length : Int
    
    func sum (num: Int) {
        print ("(num + num)")
    }
}

var block = Square (length: 10)
block.sum (num: 2)

Классы и объекты

import Cocoa
import Darwin

class Car {
    var model : String = "No model"
    var weight : Float = 0.0
    var speed : Float = 0.0
    var wheels : Int = 4
    
    init(model: String, weight: Float, speed: Float, wheels: Int) {
        self.model = model
        self.weight = weight
        self.speed = speed
        self.wheels = wheels
    }
    
    func info () {
        print ("(self.model) has weight (self.weight) and speed (self.speed). Also it has (self.wheels) wheels!")
    }
    
    func set (model: String) {
        self.model = model
    }
    
    func set (wheels: Int, weight: Float) {
        self.wheels = wheels
        self.weight = weight
    }
    
    func set (speed: Float) {
        self.speed = speed
    }
}

var audi = Car (model: "Audi", weight: 2.1, speed: 232.2, wheels: 4)
audi.info()
audi.set(model: "Audi R8")
audi.info()
audi.set(speed: 321.5)
audi.info()

var volvo = Car (model: "Volvo", weight: 2.1, speed: 170.6, wheels: 4)
volvo.set(wheels: 4, weight: 1.8)
volvo.info()
Посмотреть остальной код можно после подписки на проект!

Три свежие книги для начинающих разработчиков Swift | GeekBrains

Что можно почитать, если вы в начале пути.

https://d2xzmw6cctk25h.cloudfront.net/post/1567/og_cover_image/7217d3175d572c5aab5f774e3de21b52

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

Мы подобрали только актуальные книги по Swift, которые вышли недавно либо затрагивают области, не зависящие от версии языка.

Если с другими более устоявшимися языками разработчики советуют проверенные издания классических IT-авторов, то со Swift вас в первую очередь отправят читать официальную книгу от компании Apple, которая этот язык и разработала.

Swift Programming Language (Swift 4.1 edition) можно бесплатно скачать в itunes. На форумах и личных блогах можно найти переводы российских разработчиков, но они тоже затрагивают только предыдущие версии языка. Если вы читаете на английском, скачивайте последнюю официальную версию книги от Apple. Язык изложения сухой и довольно технический, но есть много примеров кода и даже иллюстрации различных приложений.

О том, с каким языком программирования  вам предстоит работать, можете судить по первой главе книги:

«По традиции, первая программа на новом языке должна выводить на экран словосочетание «Hello, world». На Swift это пишется всего в одну строку:


print("Hello, world!")

Если вы писали до этого код на C или Objective-C, этот синтаксис должен быть вам знаком. На Swift эта строка является законченной программой. Не нужно дополнительно импортировать отдельные библиотеки для таких функций, как ввод/вывод или обработка строк. Код, написанный в глобальной области, используется как входная точка для программы, так что функция main() больше не нужна. Также вам не нужно писать точки с запятой после каждой строки».

Да, мы предлагаем начинающим разработчикам купить детский учебник. Во-первых, такие книги часто пишут крутые программисты, которые умеют доступно объяснять теорию. А во-вторых, для тех, кто начинает программировать с нуля, важно не испугаться сложных объяснений в начале.

«Swift для детей» — самое свежее издание об этом языке на русском. Для российских читателей издательство «Манн, Иванов и Фербер» выпустило ее в январе 2018 года. Авторы книги — разработчики iOS, многодетная мама Глория Уинквсит и руководитель отдела по созданию приложений для врачей и пациентов Мэтт Маккарти.

Первый раздел посвящен редактору Xcode: как его установить, настроить и написать первый код в XcodePlayground. Cледующие две части — практические. Шаг за шагом авторы издания предлагают написать приложение Birthday Tracker и игру Schoolhouse Skateboarder. В конце учебника — краткий справочник с информацией по официальной документации Swift, комбинациями клавиш для Xcode и симулятора IOS.

Несмотря на красочные детские иллюстрации (а может и благодаря им), книга хорошо подойдет и взрослым. Чтобы оценить, насколько хорошо авторы объясняют материал, посмотрите на отрывок из главы «Как давать названия константам и переменным»:

«Переменную и константу можно называть как угодно, но только не словами, которые используются самим Swift. К примеру, вы не можете называть переменную словом var. Запись var var может привести в замешательство и вас, и компьютер. Если попытаетесь назвать переменную или константу словом, зарезервированным Swift, у вас возникнет ошибка. Также в одном блоке программы «не уживутся» две переменные и константы с одним именем. Не бойтесь использовать длинные названия, избегайте сокращений. Так будет проще разобраться, зачем нужна переменная или константа. Если бы изучали чужую программу, что для вас было бы понятнее — numKids или numberOfKidsInMyClass?».

Автор книги Мэтт Нойбург, судя по его краткой биографии в предисловии, — человек уникальный. С самого детства его одновременно интересовали и литература, и программирование; в обеих сферах он достиг больших успехов. Нойбург защитил докторскую по древнегреческой литературе, написал множество гайдов для программистов и разработал приложения MemoryStick, NotLight и Thucydides. Наверное, поэтому его книги с очень практическим значением такой приятный язык и отличный стиль изложения.

Последняя версия книга вышла в октябре прошлого года и разбирает всю теорию программирования на  Swift 4.0. Информация в издании разбита на 3 большие части:

  • Language (язык)
  • IDE (интегрированная среда разработки)
  • Cocoa (объектно-ориентированный API для macOS)

В предисловии автор довольно нескромно, но очень мотивационно пишет о своей методике обучения Swift:

«Мой способ обучения программированию на Swift отличается от других методик, в том числе от того, что предлагает Apple. Мой подход — систематический, евклидианский, все обучающие блоки связаны между собой и выстроены именно в той последовательности, которую я считаю наиболее эффективной. В то же время, в этом издании я постарался ограничиться основами — не уходить в детали. Swift — язык не сложный, но у него есть свои подводные камни. Я считаю, что не нужно глубоко вникать во все его нюансы сразу, поэтому осознанно не стал объяснять некоторые темы в книге. Например, в этой книге вы не найдете ничего о Swift Playgrounds или REPL. Я сфокусировался на актуальной практике программирования под IOS, поэтому в книге много советов из моего личного опыта разработчика».

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

Почему Swift может стать большим событием в глубинном обучении / Хабр

Здравствуй, Хабр! Представляю вашему вниманию перевод заинтересовавшей меня статьи «Why Swift May Be the Next Big Thing in Deep Learning» автора Max Pechyonkin, в которой автор рассуждает о языке на котором будет осуществляться глубокое обучение в ближайшие годы.

Если вы занимаетесь глубинным обучением, то скорее всего вам стоит начать учить Swift

Вступление


Если вы занимаетесь программированием, то скорее всего когда вы слышите Swift, вы думаете о разработке приложений на IOS и MacOS. Если вы занимаетесь глубинным обучением, то вы должно быть слышали о Swift для Tensorflow(S4TF). Тогда вы можете задаться вопросом: «Почему Google создали версию TensorFlow для Swift? Ведь уже есть версии для Python и С++ то зачем еще один язык?» В этом посте, я попытаюсь ответить на этот вопрос и изложить причины почему стоит пристально следить за S4TF, а так же за самим языком Swift. Я не буду пытаться сделать подробный разбор, лишь попытаюсь описать общую картину с большим количеством ссылок, если вас заинтересует — вы можете копнуть глубже.

За Swift стоит очень сильная поддержка


Swift был создан Крисом Латтнером когда он работал в Apple. Сейчас же Крис работает в Google Brain (одной из самых лучших исследовательских команд в сфере искусственного интеллекта в мире). Уже сам факт того, что создатель языка Swift сейчас работает в лаборатории, которая занимается глубинным обучением, говорит о серьезности этого проекта.

Некоторое время назад люди в Гугл осознали, что даже если Пайтон и замечательный язык, в нем все равно есть очень много ограничений которые тяжело преодолеть. Понадобился новый язык для TensorFlow, и после долгого обдумывания Swift был выбран кандидатом. Я не буду вдаваться в детали здесь, но вот документ, который описывает недостатки Python, а так же какие другие языки были рассмотрены и как в итоге это все сошлось на Swift.

Swift для TensorFlow это намного больше чем просто библиотека


Swift для TensorFlow это не просто TF для еще одного языка. Это по сути другая ветвь(в git смысле) языка Swift как такового. Это означает что S4TF это не библиотека; это язык со своими собственными правилами, со своими встроенными функциями которые поддерживают всю функциональность требуемую TensorFlow. Например, в S4TF есть очень мощная система автоматического дифференцирования: она является одной из фундаментальных вещей в глубинном обучении, она нужна для расчетов градиентов. Сравните это с Python, в котором автоматическая дифференциация не является основным компонентом языка. Некоторые функции разработанные первоначально как часть S4TF были позже интегрированы в сам язык Swift.

Swift быстрый


Когда я впервые узнал что Swift настолько же быстрый, как и C, я был изумлен. Я знал что С был высоко оптимизированным и позволял достигнуть очень высокой скорости, но это происходило за счет микро управления памятью, и поэтому у С были проблемы с безопасностью памяти. Кроме того С не так просто и выучить.

Сейчас Swift работает так же быстро как и С в численных расчетах, у него нет проблем с безопасностью памяти, и его намного легче выучить. Компилятор LLVM у Swift очень мощный и у него очень эффективная оптимизация, она обеспечит очень быструю скорость работы кода.

Вы можете использовать Python, C и C++ в Swift


Поскольку Swift для машинного обучения находятся на очень ранней стадии своего развития, то для него не создано столько библиотек для МО. Вы не должны об этом сильно волноваться поскольку у Swift есть удивительная совместимость с Python с Python. Вы просто импортируете любую Python библиотеку в Swift, и она работает. Также вы можете импортировать С и С++ библиотеки в Swift(для С++ вы должны убедиться что заголовочные файлы написаны на чистом С, без функций С++).

Подводя итог, если вам нужна специфическая функциональность, но она еще не реализована в Swift, вы можете импортировать соответствующие Python, C или С++ пакеты.
Впечатляюще!

Swift может идти на очень низком уровне


Если вы когда-то пользовались TensorFlow, скорее всего вы делали это с помощью пакета для Python. Под капотом Python версия библиотеки TensorFlow использует С код на очень низком уровне. Поэтому когда вы вызываете функцию в TensorFlow, на каком-то уровне вы используете немного кода С. Это означает что есть предел того, насколько глубоко вы можете проверить исходный код. Например, если вы хотите посмотреть, как реализованы свертки(convolutions), вы не увидите код Python, потому что они реализованы на С.

В Swift же по другому. Крис Латтнер назвал Swift «синтаксическим сахаром для LLVM[язык ассемблера]». Это означает, что по сути, Swift работает практически напрямую с железом, и между нет никаких других строк кода написанных на С. Это так же означает что Swift очень быстрый, как я и описал выше. Это все приводит к тому, что вы, как разработчик можете проверить код как на очень высоком, так и на очень низком уровнях, без потребности использовать С.

Что дальше?


Swift это только одна часть тех инноваций в глубинном обучении которые готовят в Google. Есть еще один компонент, который так же очень сильно связан: MLIR, что означает многоуровневое промежуточное представление(Multi-level intermediate representation). MLIR будет объединяющей инфраструктурой компилятора, которая позволит писать код на Swift(или любом другом языке) и компилировать его на любом поддерживающем железе. Сейчас существует множество компиляторов для разного целевого оборудования, но MLIR сособен изменить это, позволит не только повторно использовать код, но и писать собственные низкоуровневые компоненты компилятора. Это так же позволит исследователям применять машинное обучение для оптимизации низкоуровневых алгоритмов.

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

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

Итоги


Если вы в сфере глубинного обучения, тогда вам скорее всего стоит начать учить Swift. Это принесет много преимуществ по сравнению с Python. Google серьезно инвестирует в то чтобы Swift стал главным компонентом их TensorFlow ML инфраструктуры, и скорее всего Swift станет языком глубинного обучения. Если вы уже сейчас начнете учить и использовать Swift, то это даст вам преимущество первопроходца.

Три свежие книги для начинающих разработчиков Swift | GeekBrains

Что можно почитать, если вы в начале пути.

https://d2xzmw6cctk25h.cloudfront.net/post/1567/og_cover_image/7217d3175d572c5aab5f774e3de21b52

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

Мы подобрали только актуальные книги по Swift, которые вышли недавно исследуют область, не зависящие от версии языка.

Если с другими более устоявшими языками разработчики советуют проверенные издания классических IT-авторов, то со Swift вас в первую очередь отправят читать официальную книгу от компании Apple, которая этот язык и разработала.

Swift Programming Language (Swift 4.1 edition) можно бесплатно скачать в itunes. На форумах и личных блогах можно найти переводы разработчиков, но они тоже просматривают только предыдущие версии языка.Если вы читаете на английском, скачивайте последнюю официальную версию книги от Apple. Язык из описаний и довольно технический, но есть много примеров кода и даже различных приложений.

О, с каким языком программирования вам предстоит работать, можете судить по первой главе книги:

«По традиции, первая программа на новом языке должна выводить на экран словосочетание« Привет, мир ». На Swift это пишется всего в одной строке:

print ("Привет, мир!")
 

Если вы писали до этого кода на C или Objective-C, этот синтаксис должен быть вам знаком.На Swift эта строка является законченной программой. Не нужно вообще импортировать отдельные библиотеки для таких функций, как ввод / вывод или обработка строк. Код, написанный в глобальной области, используется как входная точка для программы, так что функция main () больше не нужна. Также вам не нужно писать точки с запятой после каждой строки ».

Да, мы предлагаем начинающим разработчикам купить детский учебник. Во-первых, такие книги часто пишут крутые программисты, которые умеют доступно объяснять теорию.А во-вторых, для тех, кто начинает программировать с нуля, важно не испугаться сложных объяснений в начале.

«Swift для детей» — самое свежее издание об этом языке на русском. Для российских читателей издательство «Манн, Иванов и Фербер» выпустило ее в январе 2018 года. Авторы книги — разработчики iOS, многодетная мама Глория Уинквсит и руководитель отдела по созданию приложений для врачей и пациентов Мэтт Маккарти.

Первый раздел посвящен редактору Xcode: как его установить, настроить и написать первый код в XcodePlayground.Cледующие две части — практические. Шаг за механизм поставки оформляется написать приложение Birthday Tracker и игру Schoolhouse Skateboarder. В конце учебника — краткий справочник с официальной информацией по Swift, комбинациями клавиш для Xcode и симулятора IOS.

Несмотря на красочные детские иллюстрации (а может и благодаря им), книга хорошо подойдет и взрослым. Чтобы оценить, насколько хорошо анализируют материал, посмотрите на отрывок из главы «Как применять константам и переменным»:

«Переменную и константу можно называть как угодно, но только не словами, которые используются самим Swift.К примеру, вы не можете называть переменную слово var. Запись var var может привести в замешательство и вас, и компьютер. Если попытаетесь назвать переменную или константу словом, зарезервированным Swift, у вас возникнет ошибка. Также в одном блоке программы «не уживутся» две переменные и константы с одним именем. Не бойтесь использовать длинные названия, избегайте сокращений. Так будет проще разобраться, зачем нужна переменная или константа. Если бы изучали чужую программу, что для вас было бы понятнее — numKids или numberOfKidsInMyClass? ».

Автор книги Мэтт Нойбург, судя по его краткой биографии в предисловии, — человек уникальный. С самого детства его одновременно интересовали и литература, и программирование; в обеих сферах он достиг больших успехов. Нойбург защитил докторскую по древнегреческой литературе, создал множество программ для программистов и разработал приложения MemoryStick, NotLight и Thucydides. Наверно, поэтому его книги с очень эффективным уровнем такой приятный язык и отличный стиль изложения.

Последняя версия книга вышла в октябре прошлого года и разбирает всю теорию программирования на Swift 4.0. Информация в издании разбита на 3 большие части:

  • Язык (язык)
  • IDE (интегрированная среда разработки)
  • Какао (объектно-ориентированный API для macOS)

В предисловии автор довольно нескромно, но очень мотивационно пишет о своей методике обучения Swift:

«Мой способ обучения программированию на Swift отличается от других методов, в том числе от того, что предлагает Apple.Мой подход — систематический, евклидианский, все обучающие блоки связаны между собой. В то же время, в этом издании я постарался ограничиться основами — не уходить в детали. Свифт — язык не сложный, но у него есть свои подводные камни. Я считаю, что не нужно глубоко вникать во все его нюансы сразу, поэтому осознанно не стал объяснять некоторые темы в книге. Например, в этой книге вы не найдете ничего о Swift Playgrounds или REPL.Я сфокусировался на актуальной практике программирования под IOS, поэтому в книге много советов из моего личного опыта разработчика ».

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

.

Создание простого приложения с использованием TableView / Хабр

Во время проведения WWDC 2019, одним из самых больших и захватывающих моментом был анонс релиза SwiftUI. SwiftUI — это совершенно новый фреймворк, который позволяет проектировать и разрабатывать пользовательские интерфейсы с написанием меньшего количества кода, декларативным способом.

В отличие от UIKit, который обычно использовался в сочетании с раскадровками, SwiftUI полностью основан на программном коде.Тем не менее, синтаксис очень прост для понимания и проект можно быстро просмотреть с помощью Automatic Preview.

9000 Городской язык SwiftUI использует язык Swift. Более того, использование SwiftUI автоматически позволяет приложению использовать такие функции, как Dynamic Type , Dark Mode , Localization и Accessibility . Кроме того, он доступен на всех платформах, включая macOS , iOS , iPadOS , watchOS и tvOS .Итак, теперь ваш код пользовательского интерфейса может быть синхронизирован на всех платформах, что дает больше времени для того, чтобы сосредоточиться на второстепенном платформо-зависимом коде.

Об этой статье

Важно, чтобы разработчики узнали, как использовать SwiftUI на более ранних стадиях, поскольку компания Apple в конечном итоге сфокусирует большую часть своего внимания на этом фреймворке. В этой статье мы рассмотрим основы SwiftUI и узнаем, как создать минимальную навигацию, отобразить изображения, текст и списки, посредством создания простого списка контактов, который представит всех участников нашей команды.При выборе команды, приложение отображает детальную информацию, которая содержит изображение пользователя с его краткой биографией. Давайте начнем!

Запустим Xcode 11 . На время написания данной статьи, Xcode 11 все еще находится в бета-версии, поэтому некоторые функции могут работать не так, как ожидалось. В этой статье мы будем использовать Swift 5 . Несмотря на то, что продвинутые знания языка Swift не обязательны для данной статьи, все же рекомендуется понимание основ языка.

Примечание редактора: Для предварительного просмотра и взаимодействия с изображениями из Canvas в Xcode, убедитесь, что на Mac установлена ​​версия MacOS 10.15 beta.

Создание нового проекта с использованием SwiftUI


Давайте начнем все сначала, чтобы вы могли сразу увидеть, как запустить приложение SwiftUI. Сначала откройте Xcode и выберите пункт «Создать новый проект Xcode». Для платформы iOS выберите приложение Single View. Введите название приложению и заполните текстовые поля.Однако следует убедиться, что внизу установлен флажок Use SwiftUI. Если вы не выбрали эту опцию, Xcode создаст для вас файл раскадровки.

Xcode автоматически создаст для вас файл с именем ContentView.swift, предварительный просмотр вашего кода, будет отображаться с правой стороны, как показано ниже.

Если вы не видите предварительного просмотра, нажмите кнопку «Продолжить в зоне предварительного просмотра». Компиляция проекта займет некоторое время.Будьте терпеливы и дождитесь завершения компиляции.

Теперь давайте посмотрим, как можно изменить эти файлы для создания приложения.

Создание представления в списке виде


Создание представления в виде списка осуществляется в три этапа. Первый — это создание строки в списке. Возможно дизайн похож на UITableView. Для этого необходимо создать ContactRow. Второй этап это передача необходимых данных в список. У меня есть данные, уже закодированы, и требуется всего лишь несколько изменений, чтобы связать список с данными.Последний этап — это просто добавление Navigation Bar и встраивание списка в Navigation View. Это довольно просто. Теперь посмотрим, как все это было реализовано в SwiftUI.

Создание списка преподавателей


Во-первых, необходимо создать представление для отображения списка всех участников команды, включая фотографии их профиля и их описание. Посмотрим, как это можно сделать.

Как мы видим, в сгенерированном коде имеется компонент Текст со значением «Hello World». В редакторе кода изменим значение кода на «Simon Ng».

  struct ContentView: View {
    var body: some View {
        Текст ("Саймон Нг")
    }
}
  

Если все работает верно, справа вы должны увидеть автоматическое обновление. Это эффект мгновенного просмотра, что мы и ожидали.

Давайте добавим в приложении новый элемент Текст . Это будет краткое описание участника. Чтобы добавить в приложении новый элемент интерфейса, нажмите кнопку + в верхнем углу. Появится новое окно со списком различных вью.Переместим вью с названием и поместим его под первоначальный элемент Текст , как показано ниже.

Обратите внимание на код слева:

  struct ContentView: View {
    var body: some View {
        VStack {
            Текст ("Саймон Нг")
            Текст («Заполнитель»)
        }
    }
}
  

Можно заметить, что новый элемент Текст был добавлен под Текст вью с величиной Simon Ng. Отлично состоит в том, что теперь это вью, похоже, обернул представление в нечто, называемое VStack.VStack используется для вертикального стека, и он является заменой Auto Layout в SwiftUI. Если у вас имеется опыт разработки программного обеспечения для watchOS, вы, вероятно, знаете, что здесь нет никаких ограничений, более тех элементов помещаются в группы. При вертикальном стеке все вью будут расположены вертикально.

Теперь измените текст «Placeholder» на «Founder of AppCoda»

Далее, давайте добавим изображение слева от этого текста. Так как мы хотим предоставить представить горизонтально к существующим представлениям, необходимо обернуть VStack в HStack.Для этого выполним ⌘ + нажмите на VStack, а затем выберем Embed in HStack. Посмотрим на это ниже:

Данный код должен выглядеть следующим образом:

  struct ContentView: View {
    var body: some View {
        HStack {
            VStack {
                Текст ("Саймон Нг")
                Текст («Основатель AppCoda»)
            }
        }
    }
}
  

Значительных изменений пока нету, но сейчас мы добавим изображение. Измените код, чтобы он выглядел следующим образом:

  struct ContentView: View {
    var body: some View {
        HStack {
            Изображение (systemName: "фото")
            VStack {
                Текст ("Саймон Нг")
                Текст («Основатель AppCoda»)
            }
        }
    }
}
  

Начало с iOS 13, Apple представляет новую функцию под названием SFSymbols.SF Symbols, компания Apple, представляет собой набор из более чем 1500 символов, которые можно использовать в приложениях. Автоматическое вертикальное выравнивание с текстом любого размера, автоматическое вертикальное выравнивание с текстом любого размера. Нам пока нас пока нет изображений наших преподавателей, будем использовать так называемый заполнитель.

Теперь сосредоточимся на некоторых незначительных проблемах дизайна.Имеется необходимость эмуляции внешнего вида UITableRow , давайте выровняем текст по левому краю (т. Е. Сделаем его главным). Для этого выполним ⌘ + Click на VStack и нажмем Inspect . Выберем значок выравнивания по левому краю, как показано ниже:

Далее увидим изменение в коде. Также код будет изменен в реальном времени для отображения новых изменений.

  VStack (выравнивание: .leading) {
    ...
}
  

Теперь, когда второе текстовое представление является заголовком, давайте изменим шрифт.Как и раньше, ⌘ + Щелкните на текстовом представлении «Основатель AppCoda» в режиме предварительного просмотра и выбираем Inspect. Изменим шрифт на «Subheadline» и действует предварительный просмотр и изменение кода в реальном времени.

Давайте также изменим цвет и установим его на «Серый». Данный код должен выглядеть следующим образом:

  struct ContentView: View {
    var body: some View {
        HStack {
            Изображение (systemName: "фото")
            VStack (выравнивание:.ведущий) {
                Текст ("Саймон Нг")
                Текст («Основатель AppCoda»)
                    .font (.subheadline)
                    .цвет (. серый)
            }
        }
    }
}
  

Теперь, после окончания проектирования ряда сэмплов, мы подошли к волшебной части. Посмотрите, как легко создать список. Выполним ⌘ + Нажмите на HStack и выполним клик на Embed in List. Вуаля! Посмотрите, как код будет автоматически меняться, и пустая область будет отображать 5 красивых новых строк, каждую из которых показывает Симон Нг в качестве члена команды.

Также обязательно обратите внимание, как был создан Список в коде. Удалившееся представление HStack и заменив его повторяющимся List. Теперь подумайте о том, сколько времени вы сэкономите и на сколько меньше кода написали, избегая все эти UITableViewDataSource, UITableViewDelegate, Auto Layout, реализации для темного режима и т. д. Все это само по себе показывает мощь и силу SwiftUI. Тем не менее, мы далеки от завершения. Давайте добавим некоторые реальные данные в новый список.

Подключение данных к списку


Данные, которые нам необходимы, это список участников команды и их биография вместе с папкой со всеми их изображениями. Вы можете скачать необходимые файлы здесь. Вы должны найти 2 файла с именами Tutor.swif t и Tutor.xcasset s.

После загрузки файла с расширением Swift и папкой ресурсов в проекте Xcode. Чтобы их импортировать, просто перетащите их в навигатор проекта.

В файле Репетитор.swif t объявляем структуру Tutor и приводим ее в соответствие с протоколом Идентифицируем. Вы поймете, почему это важно позже. Также определяем переменные id, имя, заголовок, биография и imageName. Наконец, добавим некоторые тестовые данные, которые были введены в нашем приложении. В Tutor.xcassets имеются изображения всех участников команды.

Вернитесь к ContentView.swift и измените код следующим образом:

  struct ContentView: View {
    // 1
    var tutors: [Tutor] = []
 
    var body: some View {
        Список (0.. <5) {элемент в
            Изображение (systemName: "фото")
            VStack (alignment: .leading) {
                Текст ("Саймон Нг")
                Текст («Основатель AppCoda»)
                    .font (.subheadline)
                    .цвет (. серый)
            }
        }
    }
}
 
#if DEBUG
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        // 2
        ContentView (репетиторы: testData)
    }
}
#endif
  

Все довольно просто:

  1. Определим новую переменную с именем tutors, которая является пустым массивом структур Tutor.
  2. Мы определяем новую переменную структуру для ContentView, следовательно, необходимо также изменить ContentView_Previews, чтобы отобразить это изменение. Установим в testData параметр tutors.

В предварительном просмотре не будет никаких изменений, потому что мы еще не используем тестовые данные. Чтобы отобразить тестовые данные, измените код следующим образом:
  struct ContentView: View {
    var tutors: [Tutor] = []
 
    var body: some View {
        List (репетиторы) {репетитор в
            Изображение (репетитор.imageName)
            VStack (alignment: .leading) {
                Текст (имя репетитора)
                Текст (tutor.headline)
                    .font (.subheadline)
                    .цвет (. серый)
            }
        }
    }
}
  

Убедимся, что ContentView использует инструменты для отображения данных на экране.

Вот так! Посмотрите, как изменилось представление.

Изображения выше в виде квадрата. Хотелось бы, чтобы они выглядели более округлыми.Давайте посмотрим, как мы можем сделать изображение с закругленными углами. В верхней части нажмите кнопку + и нажмите на вторую вкладку. Так будет макет отображен список модификаторов, которые вы можете добавить к изображениям.

Ищите «Угловой радиус / Угловой радиус», перетащите его из окна просмотра и поместите его на изображение. Вы увидите измененный код, и изображения предварительного просмотра будет изменено на следующее.

Тем не менее, радиус закругления в 3 слишком мал.Итак, измените его на 40. Таким образом получаем красивые скругленные картинки.

Ячейка и список готовы! Далее необходимо отображать детальную информацию, когда пользователь нажимает на ячейку. Давайте начнем работу с создания навигаций.

Создание навигации


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

В SwiftUI обернуть Список вью в NavigationView также очень просто. Все, что вам нужно сделать, это изменить код следующим образом:

  ...
var body: some View {
    NavigationView {
        List (репетиторы) {репетитор в
            ...
        }
    }
}
...
  

Необходимо выполнить оборачивание кода Список в NavigationView. По умолчанию панель навигации не имеет заголовка. Предварительный просмотр должен переместить список вниз, оставляя очень большой разрыв в середине.Это потому, что мы не установили заголовок для панели навигации. Чтобы исправить это, установить заголовок, добавив строку кода (т.е. .navigationBarTitle):

  ...
var body: some View {
    NavigationView {
        List (репетиторы) {репетитор в
            ...
        }
        .navigationBarTitle (Текст ("Репетиторы"))
    }
}
...
  

Теперь экран должен выглядеть примерно так:

Далее установим кнопку навигации. NavigationButton ведет на новый экран, который находится в стеке навигации.Подобно тому же, как мы обернули List в NavigationView, необходимо обернуть содержимое List с помощью NavigationButton, как показано ниже:

  ...
var body: some View {
    NavigationView {
        List (репетиторы) {репетитор в
            NavigationButton (назначение: Text (tutor.name)) {
                Изображение (tutor.imageName)
                VStack (alignment: .leading) {
                    Текст (имя репетитора)
                    Текст (tutor.headline)
                        .font (.subheadline)
                        .цвет (серый)
                }
            }
        }
        .navigationBarTitle (Текст ("Репетиторы"))
    }
}
...
  

Теперь имя участника отображено в подробном представлении. Сейчас самое время проверить это.

В текущем режиме предварительного просмотра вы не можете взаимодействовать с представлением. Обычно, когда вы нажимаете на предварительный просмотр, происходит простое выделение кода. Чтобы выполнить тест и проверить взаимодействие с пользовательским интерфейсом, нажмите кнопку воспроизведения в правом нижнем углу.

Вью станет темным, и возможно, придется подождать пару секунд, пока загрузится весь симулятор, прежде чем появится возможность реально использовать с представлениями.

Когда загрузка закончится, вы можете нажать на ячейку, и она перейдет к новому представлению в стеке, в котором будет имя выбранной ячейки.

Прежде чем перейти к реализации детализированного представления, позвольте мне показать вам хитрый прием, который поможет сделать ваш код более разборчивым.⌘ + Щелкните NavigationButton и выберите «Извлечь вложенное представление».

Бум! Вы можете видеть, что весь код в NavigationButton был создан в совершенно новой структуре, которая делает его очень разборчивым. Переименуйте ExtractedView в TutorCell.

Теперь можно получить ошибку в TutorCell. Это потому, что у нас нет руководителя для передачи в эту структуру. Исправить ошибку очень просто. Добавьте новую константу в структуру TutorCell следующим образом:

  struct TutorCell: View {
    пусть репетитор: Репетитор
    var body: some View {
        ...
    }
}
  

А, в ContentView, добавьте отсутствующий параметр изменив на:

  ...
List (репетиторы) {репетитор в
    TutorCell (репетитор: репетитор)
} .navigationBarTitle (Текст ("Репетиторы"))
...
  

Вот и все! Имеется список и ячейки, все они хорошо продуманные и разложены в необходимом порядке! Далее мы собираемся создать детальный вид, который будет показывать всю информацию о преподавателе.

Создание представления для цифровой информационной информаций.


Давайте создадим новый файл, перейдя в Файл> Новый> Файл. Для iOS выберите SwiftUI View и назовите этот файл TutorDetail .

Предварительная предварительная версия уже создан главный базовый вид. Давайте с ним поработаем. Сначала нажмите кнопку «+» и поместите изображение над уже встроенным представлением Text. Установленное имя изображения «Simon Ng». Должно появится изображение Саймона. Теперь измените код так, как показано ниже:

  struct TutorDetail: View {
    var body: some View {
        // 1
        VStack {
            // 2
            Изображение ("Саймон Нг")
                 .clipShape (Круг ())
                .overlay (
                    Circle (). Stroke (Color.orange, lineWidth: 4)
                )
                .shadow (радиус: 10)
            // 3
            Текст ("Саймон Нг")
                .font (.title)
        }
    }
}
  

В целом этот код достаточно понятен, но в случае если Вам нужны разъяснения, не волнуйтесь. Вот, что происходит:

  1. Сначала мы упаковываем все наши представления в вертикальный стек. Это имеет решающее значение для макета дизайна, который мы будем принимать.
  2. Затем берем изображение Саймона и оживляем его. Сначала установим клипы изображения в форме круга. Вместо того, чтобы установить cornerRadius, это намного эффективнее, поскольку круг можно приспособить к различным размерам изображения. Мы добавляем наложение круга с белой рамкой, которая обеспечивает красивую оранжевую рамку. Наконец, мы добавим легкую тень, чтобы обеспечить некоторую глубину изображения.
  3. Наша последняя строка кода устанавливает шрифт имени преподавателя на шрифт заголовка.

Также необходимо добавить еще два текстовых вью: заголовок и биографию. Перетащите два текстовых вью ниже текстового вью с именем преподавателя, и отредактируйте их:

  struct TutorDetail: View {
    var body: some View {
        VStack {
            Изображение ("Саймон Нг")
                 .clipShape (Круг ())
                .overlay (
                    Circle (). Stroke (Color.orange, lineWidth: 4)
                )
                .shadow (радиус: 10)
            Текст ("Саймон Нг")
                .шрифт (.title)
            Текст («Основатель AppCoda»)
            Text («Основатель AppCoda. Автор нескольких книг по программированию для iOS, включая« Начало программирования iOS 12 с помощью Swift »и« Промежуточное программирование iOS 12 с помощью Swift. Разработчик iOS и Blogger. »)
        }
    }
}
  

Хорошей новостью является то, что у нас есть текстовые вью. Плохая новость в том, что они плохо выглядят и не показывают разницу между заголовком и детальным описанием. Кроме того, текстовое вью биографии не отображает весь текст.Давайте исправим это.

Обновите код следующим образом:

  struct TutorDetail: View {
    var body: some View {
        VStack {
            Изображение ("Саймон Нг")
                 .clipShape (Круг ())
                .overlay (
                    Circle (). Stroke (Color.orange, lineWidth: 4)
                )
                .shadow (радиус: 10)
            Текст ("Саймон Нг")
                .font (.title)
            // 1
            Текст («Основатель AppCoda»)
                .шрифт (.subheadline)
            // 2
            Text («Основатель AppCoda. Автор нескольких книг по программированию для iOS, включая« Начало программирования iOS 12 с помощью Swift »и« Промежуточное программирование iOS 12 с помощью Swift. Разработчик iOS и Blogger. »)
                .font (.headline)
                .multilineTextAlignment (.center)
 
        }
    }
}
  
  1. Сначала мы устанавливаем «Founder of AppCoda» со шрифтом подзаголовка.
  2. Точно так же мы устанавливаем текстовое биографии, используя шрифт заголовок.Мы также выровняем текст с линией .multilineTextAlignment (.center)

Давайте исправим следующую ошибку. Нам необходимо ввести весь текст текстового представления биографии. Это можно легко сделать, добавив новую код кода:

  ...
Text («Основатель AppCoda. Автор нескольких книг по программированию для iOS, включая« Начало программирования iOS 12 с помощью Swift »и« Промежуточное программирование iOS 12 с помощью Swift. Разработчик iOS и Blogger. »)
        .шрифт (.headline)
        .multilineTextAlignment (.center)
        .lineLimit (50)
...
  

Все выглядит хорошо. Есть одно последнее изменение дизайна, которое я хочу сделать. Заголовок и текстовые представления биографии находятся слишком близко друг к другу. Я хотел бы иметь пространство между этими двумя представлениями. Кроме того, я хотел бы добавить некоторые отступы ко всем вью, чтобы они не касались краев устройства. Убедитесь, что вы изменили код следующим образом:

  struct TutorDetail: View {
    var body: some View {
        VStack {
            Изображение ("Саймон Нг")
                 .clipShape (Круг ())
                .overlay (
                    Circle (). Stroke (Color.orange, lineWidth: 4)
                )
                .shadow (радиус: 10)
            Текст ("Саймон Нг")
                .font (.title)
            Текст («Основатель AppCoda»)
                .font (.subheadline)
            // 1
            Разделитель ()
 
            Text ("Основатель AppCoda. Автор нескольких книг по программированию для iOS, включая" ​​Начало программирования iOS 12 с помощью Swift "и" Промежуточное программирование iOS 12 с помощью Swift. "Разработчик iOS и Blogger. ")
                .font (.headline)
                .multilineTextAlignment (.center)
                .lineLimit (50)
        // 2
        } .padding ()
    }
}
  

Здесь выполним несколько изменений:

  1. Добавить разделитель так же просто, как и вызвать Divider ()
  2. Чтобы добавить отступы ко всему вертикальному стеку, необходимо вызвать .padding () в конце объявления VStack.

Это все! Поздравляю! Экран детального просмотра готов.Осталось только соединить наш список преподавателей и их детальное описание. Это довольно просто.

Передача данных


Для передачи данных необходимо объявить некоторые параметры в структуре TutorDetail . Перед объявлением тела добавление следующих переменных:
  имя переменной: Строка
var headline: String
var bio: String
var body: some View {
    ...
}
  

Это параметры, которые мы передадим из ContentView. Проведите следующие изменения:

 ...
var body: some View {
    VStack {
        // 1
        Изображение (имя)
            .clipShape (Круг ())
               .overlay (
                   Circle (). Stroke (Color.orange, lineWidth: 4)
            )
               .shadow (радиус: 10)
        // 2
        Текст (имя)
            .font (.title)
        // 3
        Текст (заголовок)
            .font (.subheadline)
        Разделитель ()
        // 4
        Текст (биография)
            .font (.headline)
            .multilineTextAlignment (.center)
            .lineLimit (50)
        // 5
    }.padding (). navigationBarTitle (Текст (имя), displayMode: .inline)
}
...
  
  1. Заменим имя преподавателя для image на переменную имя
  2. Заменим текст заголовка на переменную заголовок
  3. Наконец, заменим длинный абзац текста на переменную биографию
  4. Также была добавлена ​​строка кода, которая установит заголовок панели навигации на имя преподавателя.

И последнее, но не менее важное: нам необходимы отсутствующие параметры в структуре TutorDetail_Previews.

  #if DEBUG
struct TutorDetail_Previews: PreviewProvider {
    static var previews: some View {
        TutorDetail (имя: «Саймон Нг», заголовок: «Основатель AppCoda», биография: «Основатель AppCoda. Автор нескольких книг по программированию для iOS, включая« Начало программирования iOS 12 с помощью Swift »и промежуточное программирование iOS 12 с помощью Swift. Разработчик iOS и Blogger. ")
    }
}
#endif
  

В приведенном выше коде мы добавляем отсутствующие параметры и заполняем информацию, что имели ранее.

Вы можете быть удивлены, что случилось с инструкциями #if DEBUG / # endif . Это означает, что любой код, заключенный в эти команды, будет выполнен только при предварительной предварительной версии для целей отладки. В вашем последнем приложении этого не будет.

Ничто не должно измениться, так как информация также ввести.

И так, последний шаг - связать это представление со списком. Переключитесь на файл ContentView.swift. Все, что необходимо, это изменить одну строку кода в структуре TutorCell.Измените код NavigationButton на ниже приведенный:

  ...
var body: some View {
    return NavigationButton (destination: TutorDetail (name: tutor.name, headline: tutor.headline, bio: tutor.bio)) {
        ...
    }
}
...
  

Вместо того, чтобы представить представление с именем преподавателя, необходимо изменить место назначения на TutorDetail при заполнении соответствующих данных. Данный код должен выглядеть следующим образом:

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

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

И тогда будут отображены детали на детальном экране.

Заключение


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

SwiftUI Documentation
SwiftUI Tutorials
Знакомство с SwiftUI: создание вашего первого приложения
SwiftUI Essentials

Этот фреймворк - это будущее развития Apple, поэтому очень здорово, если вы начнете именно с него. Помните, что если вы не уверены, что вы не уверены в том, что вы не уверены в том, что вы можете внести изменения в пользовательский интерфейс напрямую, чтобы увидеть, как создается код. Если у вас есть какие-либо вопросы, не стесняйтесь, задавайте их в комментариях ниже.

Для справки вы можете скачать готовый проект здесь.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *