Сегодня мы познакомимся с WatchKit и создадим свое первое приложение для Apple Watch.
Apple Watch & WatchOS
На WWDC 2016 Apple вновь уделило много времени своему молодому детищу — Apple Watch и его обновленной операционной среде watchOS 3. Компания постепенно подходит к моменту, когда часы станут полностью независимыми от телефона. В watchOS 3 увеличилась производительность системы, приложения стали быстрее и более отзывчивыми. Когда вы выходите из приложения, система оставляет его в бэграунде примерно на 8 минут, чтобы повторный запуск осуществлялся намного быстрее. Появился доступ к CloudKit, и часы могут быть синхронизированы с телефоном, если его нет рядом.
Всё это наталкивает на мысли о том, что Apple всё-таки удастся сделать часы более привлекательным девайсом для человека, и нужно быть готовым к созданию красивых и быстрых приложений под watchOS.
Проба пера
Чтобы не отходить от канонов, мы напишем первым приложение «Hello World».
Сочетанием клавиш ⇧⌘N создадим новый проект iOS App with WatchKit App.
Назовем наш проект HelloAppleWatch и снимем все галочки — сегодня они нам не понадобятся.
Watch app состоит из трех главных частей:
iOS app: хост приложения, который работает на iPhone или iPad. Вы никогда не сможете запустить приложение на часах без этой составляющей.
Watch app: это bundle из файлов и ресурсов, которые содержатся в хосте, но впоследствии устанавливаются на Apple Watch. Здесь хранятся все storyboard’ы, картинки или локализации, используемые storyboard’ами.
Watch extension: содержит весь написаный код, который компилируется и передаётся Apple Watch на выполнение. Здесь должны храниться все картинки и локализации, которые используются в коде.
Как мы видим, xCode создал все эти составляющие с соответствующими именами: HelloAppleWatch, HelloAppleWatch WatchKit App, HelloAppleWatch WatchKit Extension.
Откроем Interface.storyboard в HelloAppleWatch WatchKit App.
Перед нами давольно привычная картина, ничем не отличающаяся от сториборда для iPhone/iPad.
В Object Library выберем label и перетащим его на наш контроллер.
Чтобы переместить label в центр контроллера необходимо в Attributes inspector изменить значения Alignment Horizontal/Alignment Vartical на Center. Если Вы попытаетесь перетащить label мышкой на другую позицию, то у Вас ничего не получится — он вернется на исходную позицию.
Теперь изменим значение Text на «Hello World!!!«. И поменяем шрифт на System 20.0
Обратите внимание: размер лэйбла меняется автоматически.
Теперь запустим наше приложение. Для этого изменим активную схему на HelloAppleWatch WatchKit App и нажмём кнопку Run.
Видим, что у нас запустилось два симулятора: iPhone и Watch. Текст отображается корректно.
Теперь давайте изменим значение Text на «Hello Apple Watch!!!», но на этот раз уже из кода. Для этого перейдем в файл InterfaceController.swift. Добавим аутлет
@IBOutlet var label: WKInterfaceLabel
И внутри метода willActivate() установим новое значение Text:
label.setText("Hello Apple Watch!!!")
Теперь наш класс примет вид:
Соединием в Connections inspector наш Outlet с нашим лэйблом. И изменим количество строк у label на 0, а Alignment на center.
Запустим проект и увидим приятную картину.
Отлично. Вот первое приложение для Apple Watch и готово.
WatchKit framework
В завершении хочется чуть более детально осветить WatchKit framework, благодаря которому и запускаются все приложения для Apple Watch.
В фреймворк входят порядка 43 классов, но особняком стоят три из них:
- WKInterfaceController: версия всем привычного UIViewController в WatchKit;
- WKInterfaceObject: базовый класс всех элементов интерфейса;
- WKInterfaceDevice: предоставляет всю информацию о часах, размере экрана, локали.
Lifecycle
Жизненный цикл WKInterfaceController очень похож на жизненный цикл UIViewController’а.
- awake(withContext:) — вызывается сразу сразу после того, как контроллер был загружен из сториборда;
- willActivate() — перед тем, как контроллер появится на экране, управление будет передано в этот метод;
- didAppear() — вызывается после появляения контроллера на экране;
- willDisappear() — вызывается перед переходом на новый экран;
- didDeactivate() — вызывается каждый раз, когда пользователь покинул текущий контроллер.
Итоги
Сегодня мы создали самое простое из возможных приложение для Apple Watch. Удостоверились, что WatchKit похож на UIKit. И, что самое главное, я надеюсь, испытали удовольствие от простого введения в разработку под watchOS.
На этом статьи про Apple Watch не заканчиваются. Следите за обновлениями.
Спасибо за внимание)
Автор снимка: @bandwerk
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.