Uikit swift что это
Курс: UIKit
Содержание
Описание курса
Вы продолжаете изучать программирование на Swift и это просто классно. Этот курс так же нацелен на начинающих, которые еще делают свои первые шаги в программировании и еще не знакомы с основами работ с пользовательским интерфейсом.
Здесь мы не просто познакомимся с элементами UI, но и разберем работу с каждым из них, так что вы сможете применять свои знания на практике сразу после просмотра конкретного видео.
Чтобы вам было комфортно проходить данный курс, убедитесь в том, что вы знакомы с основами языка Swift, так как здесь мы с вами на основах самого языка подробно останавливаться не будем, а будем исключительно использовать наши знания языка для практики с элементами UI.
Ну что, ребята, к новым целям и новым достижениям!
Содержание курса
Содержание
1. Intro (4:54)
2. UIButton и UILabel (22:50)
3. UISegmentedControl (9:55)
Тест 21-1
4. UISlider (13:01)
5. UITextField (18:34)
6. UIScrollView (6:35)
7. UIDatePicker (11:38)
Тест 21-2
8. UISwitch (7:17)
9. UIPickerView (19:47)
10. UITextView (23:08)
11. UIStepper (5:26)
Тест 21-3
12. UIActivityIndicatorView (6:11)
13. UIProgressView (4:30)
14. UITableView + UIImage (16:40)
Тест 21-4
15. UICollectionView (9:52)
16. UIStackView (17:50)
17. UITabBar (5:14)
Тест 21-5
18. WebKit (15:20)
19. UIContainerView (15:01)
20. UIPageViewController. Part 1 (10:18)
21. UIPageViewController. Part 2 (13:24)
Тест 21-6
22. UIPageViewController. Part 3 (9:02)
23. UIPageViewController. Part 4 (5:39)
24. UIGestureRecognizer (11:36)
Тест 21-7
25. Outro (1:04)
Общая продолжительность курса 4 часов 44 минуты 46 секунд.
UIKit ты вообще про UI?
Когда я начинал писать эту статью, хотелось рассказать много фундаментальных вещей. Одновременно с этим хотелось, чтобы она была понятна всем, поэтому я начал с описательной части. Со временем понял, что материала получается слишком много, и я решил разбить ее на несколько частей. Возможно какие-то вещи для вас покажутся совсем простыми и очевидными, но они нужны для того, чтобы хорошо разобраться и ориентироваться, как же все-таки устроен UI.
Так как же он устроен? У нас же есть базовый класс UIView и куча его стандартных наследников. Мы можем сами создавать свои вью и как угодно их кастомизировать. И все это видим на экране. Почему тогда UIKit и UIView – это не про графический интерфейс? Давайте разбираться.
1. Исторический экскурс
Вспомним, что же было до появления iPhone. Были маки – компьютеры на операционной системе macOS. Сейчас для нас очевидно, что это 2 разных пользовательских опыта – тыкать пальцем в экран и елозить мышкой по столу + стучать по клавишам на клавиатуре, но тогда перед инженерами Apple стояла задача взять механизм отрисовки интерфейса из мака и научить его в «Мультитач». И вот, что получилось:
Четкое разделение ответственности (привет, SOLID) позволило не дублировать код, а просто добавить новую надстройку, которая будет распознавать пользовательские жесты и обрабатывать их. А слой, который отвечает за отрисовку, остался общим. Круто? Круто!
Кстати, до версий Mac OS X 10.5 и iPhoneOS 2.0 CoreAnimation носил менее ориентированное на анимацию название – LayerKit.
2. Core Graphics & Metal
3. Responder Chain
Часто можно услышать, что базовым классом UIKit является UIView. Однако, если мы посмотрим на его реализацию, то увидим, что он является наследником UIResponder, что говорит о многом в назначении UIKit.
Респондер – это тот, кто отвечает на пользовательские жесты. Но как наша вью узнает, что пользователь нажал именно на нее и что ей нужно обработать этот экшн? Здесь нам на помощь приходит механизм Responder Chain.
Когда пользователь нажимает на экран это событие попадает в наше приложение (объект UIApplication). Дальше оно отправляется в UIWindow, где и запускается цепочка поиска firstResponder’а, в границах которого и было произведено нажатие. Цепочка запускается рекурсивным вызовом метода по всей иерархии дочерних вью:
Метод, который банально проверяет, находится ли точка в границах вью:
Если точка находится внутри вью, поиск продолжается уже среди своих дочерних вью, вызывая метод hitTest у них. Так продолжается пока не будет найдена самая нижняя в иерархии (самая верхняя на экране) вью, в которую попадает нажатие.
Если точка не находится внутри вью – возвращается nil.
Таким образом, наше корневое окно (объект UIWindow) находит вью-ферстреспондера и вызывает у него соответствующие методы:
Отдельно стоит отметить объекты UIGestureRecognizer. Они имеют больший приоритет, чем Responder Chain, и обрабатываются на этапе «погружения».
Кстати, у слоев тоже есть методы определения, попадает ли точка в границы слоя:
Подробнее про Responder Chain можно прочитать в статье.
4. UIView и CALayer
Если вью – это не про графический интерфейс, для чего у него так много свойств для управления внешним видом? Все просто: вью является контейнером слоя и предоставляет более высокоуровневое API для работы с внешним видом.
Мы привыкли визуализировать интерфейс в виде иерархии вью (дерево). А теперь давайте представим, что таких дерева 2 – дерево вью и дерево слоев. На самом деле их 4 (дерево слоев представлено 3 деревьями), но об это этом позже. Сейчас нам важны только 2.
Точно так же, как и вью, мы можем добавлять слои друг на друга и выстраивать целые иерархии. Все они складываются в свое дерево, не ограничиваясь той вью, которой они принадлежат. Обратите внимание, что все вью обязательно содержат слой, а вот слои могут существовать без привязки к какому-то вью. Это тоже очень важный момент, который мы разберем в разделе с анимацией.
Все, что вы хотели знать о SwiftUI, но боялись спросить
Привет! Меня зовут Ренат, я разрабатываю сервис по аналитике подписок в iOS – Apphud.
Как вы знаете, Apple на WWDC 2019 представила свой новый фреймворк SwiftUI, который призван в будущем заменить (или нет?) привычный нам UIKit. SwiftUI позволяет описывать интерфейс приложений в декларативном стиле и сильно сокращает количество кода.
Apple уже представила несколько интересных туториалов на английском языке с множеством примеров. Я же постараюсь рассказать о новом фреймворке в форме вопросов и ответов. Итак, поехали.
Перед началом работы
Для работы со SwiftUI необходимо скачать Xсode 11 Beta. Вы также должны быть зарегистрированным разработчиком Apple. Иметь последнюю macOS Catalina желательно, но не обязательно. Без нее не будет доступен Canvas.
Итак, в Xсode 11 Beta создайте новый проект и убедитесь, что стоит галочка “Use SwiftUI”.
Вопросы и ответы
Куда подевался Interface Builder?
Для SwiftUI теперь не нужен Interface Builder – ему на смену пришел Canvas – интерактивный редактор интерфейса, который тесно связан с кодом. При написании кода автоматически генерируется его визуальная часть в canvas и наоборот. Очень удобно, а главное безопасно. Теперь ваше приложение не будет падать из-за того, что вы забыли обновить связь @IBOutlet с переменной. В данной статье мы не будем затрагивать canvas, рассмотрим только код.
Изменился ли запуск приложения?
Класс SceneDelegate указывается в Info.plist
Чем View отличается от UIView?
Что такое body?
Opaque return types или что такое some?
Ошибка компилирования при попытке вернуть в body более одного элемента
Что за синтаксис внутри скобок и где addSubview?
В Swift 5.1 появилась возможность группировать объекты в нечто единое целое в декларативном стиле. Это похоже на массив внутри closure-блока, однако элементы перечисляются с новой строки без запятых и return. Данный механизм назвали Function Builder.
Это нашло широкое применение в SwiftUI. На основе Function Builder сделали ViewBuilder – декларативный конструктор интерфейса. Используя ViewBuilder нам больше не нужно писать addSubview для каждого элемента – достаточно перечислить все View с новой строки внутри closure-блока. SwiftUI сам добавит и сгруппирует элементы в более сложный родительский контейнер.
Объявление ViewBuilder в SwiftUI фреймворке
Как добавлять UILabel, UIImageView и другие элементы?
Однако не все контролы и View имеют свои аналоги в SwiftUI. Вот неполный список классов из UIKit и их аналоги:
Курс: UIKit
Содержание
Описание курса
Вы продолжаете изучать программирование на Swift и это просто классно. Этот курс так же нацелен на начинающих, которые еще делают свои первые шаги в программировании и еще не знакомы с основами работ с пользовательским интерфейсом.
Здесь мы не просто познакомимся с элементами UI, но и разберем работу с каждым из них, так что вы сможете применять свои знания на практике сразу после просмотра конкретного видео.
Чтобы вам было комфортно проходить данный курс, убедитесь в том, что вы знакомы с основами языка Swift, так как здесь мы с вами на основах самого языка подробно останавливаться не будем, а будем исключительно использовать наши знания языка для практики с элементами UI.
Ну что, ребята, к новым целям и новым достижениям!
Содержание курса
Содержание
1. Intro (4:54)
2. UIButton и UILabel (22:50)
3. UISegmentedControl (9:55)
Тест 21-1
4. UISlider (13:01)
5. UITextField (18:34)
6. UIScrollView (6:35)
7. UIDatePicker (11:38)
Тест 21-2
8. UISwitch (7:17)
9. UIPickerView (19:47)
10. UITextView (23:08)
11. UIStepper (5:26)
Тест 21-3
12. UIActivityIndicatorView (6:11)
13. UIProgressView (4:30)
14. UITableView + UIImage (16:40)
Тест 21-4
15. UICollectionView (9:52)
16. UIStackView (17:50)
17. UITabBar (5:14)
Тест 21-5
18. WebKit (15:20)
19. UIContainerView (15:01)
20. UIPageViewController. Part 1 (10:18)
21. UIPageViewController. Part 2 (13:24)
Тест 21-6
22. UIPageViewController. Part 3 (9:02)
23. UIPageViewController. Part 4 (5:39)
24. UIGestureRecognizer (11:36)
Тест 21-7
25. Outro (1:04)
Общая продолжительность курса 4 часов 44 минуты 46 секунд.
Введение
Ознакомьтесь с основными настройками и обзором фреймворка UIkit.
Для начала скачайте UIkit по ссылке ниже. Другие способы установки и подключение через CDN находятся в разделе Установка.
Содержимое архива
Zip архив содержит компилированные файлы CSS и JavaScript, которые уже готовы к работе. Вы также можете установить и компилировать UIkit и, конечно, создать собственную тему UIkit.
Директория | Описание |
---|---|
/css | Содержит файлы CSS фреймворка UIkit в вариатнтах LTR и RTL. |
/js | Содержит JavaScript файлы фреймворка UIkit и библиотеку иконок, основанную на JavaScript. |
HTML разметка
Подключите скомпилированные и минифицированные CSS и JavaScript файлы в вашего документа HTML5. Также подключите библиотеку иконок UIkit. Готово! Настройка завершена.
Итак, мы подключили UIkit на свои страницы. Теперь ознакомьтесь с доступными компонентами и создайте собственную разметку внутри тега вашей страницы.
Внимание UIkit 3 больше не использует библиотеку JQuery, поэтому ее подключать не обязательно.
Плагины автозаполнения для UIkit в редакторах кода
Вероятно, в работе вы используете редакторы кода. Для повышения эффективности работы используйте плагины автозаполнения UIkit для различных редакторов и IDE. Например, плагин для Sublime и Atom. Используя автозаполнение, вы сэкокономите много времени, так как не искать и вводить все классы UIkit и примеры разметки станет проще.
Поддержка браузеров
В этой таблице перечислены версии, на которых тестировался UIkit. «Последняя» означает, что он отлично работает на всех последних версиях этого браузера.