Вече не се нуждаете от Xcode, за да пишете Swift или да разработвате динамични, междуплатформени интерфейси със SwiftUI – лекият редактор на код на Apple е тук

Когато чух, че Playgrounds са пуснати за MacOS, бях объркан. Playgrounds съществуват от 2014 г., когато бяха пуснати заедно с езика за програмиране Swift. За тези, които никога не са го използвали в тази форма, това по същество е среда за четене-оценка-отпечатване (REPL) за бързо прототипиране на малки кодови фрагменти. Ако не знаете какво е REPL, мислете за него като за начин да анализирате всеки ред от вашия код, като ви показва резултата от него в края на реда. Има брояч за това колко пъти се изпълнява цикъл и щракването върху която и да е променлива ви позволява да добавите Viewer, което основно запазва стойността на тази променлива на екрана по време на изпълнението на кода.

По-сложни проекти също могат да бъдат направени с помощта на инструмента, но не можете да ги изградите на iOS устройство или симулатор или да ги пуснете в App Store.

Приложението Swift Playgrounds за iPad беше пуснато през 2016 г., но не беше същото като инструмента Xcode. Имаше прилики, разбира се, но имаше повече образователен фокус. Приложението дойде с някои забавни уроци, които позволиха на кода ви да помогне на анимационния извънземен Байт да обиколи лабиринт или да научи как да рисувате в Blu’s Adventure. Идеята беше да накараме децата, които може да нямат достъп до Mac, но често имат достъп до iPad, да започнат да кодират със Swift.

Образователните уроци по кодиране така и не стигнаха до MacOS. Досега!

Най-вълнуващото ново нещо в разработката на iOS, SwiftUI е нова декларативна рамка за създаване на динамични и отзивчиви интерфейси за iOS, MacOS, tvOS и WatchOS. Има два начина да го използвате за създаване на MacOS приложения — конвенционалния начин, като създадете MacOS проект и изберете SwiftUI за потребителски интерфейс, или като създадете iOS проект с SwiftUI и изберете Mac като една от целевите платформи. iOS проектите вече могат да се създават за iPhone, iPad и Mac с помощта на рамка, наречена Catalyst.

Защо повдигам Catalyst? Тъй като сега Apple го използва, за да пренесе iPad версията на Playgrounds в MacOS. Версията на Xcode все още е там, но вече имаме и образователни класове по кодиране. Swift Playgrounds заема само 155 MB пространство, когато се изтегли от Mac App Store, в сравнение с Xcode, който е по-близо до 10 GB. Когато разбрах, че можете да пишете SwiftUI в Playgrounds, разбрах, че Live View понякога работи по-добре от Canvas Preview на Xcode.

Ето какво ще направите в този урок:

Това е доста основно приложение SwiftUI, само за да можете да видите как контролите могат бързо да бъдат прототипирани с помощта на този инструмент. След като можете да направите основни контроли, можете да персонализирате външния им вид, докато с удоволствие ги копирате в iOS проект. Другото използване на Playgrounds е за подаване на документи към програмата за студентски стипендии на WWDC, тъй като не се приемат напълно оформени приложения за iOS.

Playgrounds могат да покажат вашия талант за кодиране, без да е необходимо да инсталирате нещо на устройство. Предполагам, че Apple се е преместила в тази посока поради по-малките размери на файловете за всички тези подавания!

Да започваме

Първо изтеглете безплатното приложение Swift Playgrounds от Mac App Store. В MacOS има множество опции за създаване на нов проект. Можете просто да отидете на File › New Blank Playground и ще бъде създаден файл, използващ формата PlaygroundBook. Това е добре, ако никога няма да използвате файла си с Playground на Xcode, но има друг формат, който ще работи и с двете. В горната част на екрана ще видите всички Playgrounds, които сте правили преди на iPad. В долната част има лента, която казва „Още игрища“, със син бутон в десния край, който казва „Виж всички“.

Тук ще видите всички образователни ръководства, които споменах, както и различни отправни точки, които действат като шаблони. Изберете „Виж всички“ в „Начални точки“ и изберете „Xcode Playground“. Тези файлове може да нямат всички същите функции като PlaygroundBook, но имат всичко, от което ще се нуждаем за този урок. Когато искате да получите достъп до кода си по-късно, може да е разочароващо, ако използвате Xcode и вашето Playground изисква вместо това да го отворите в приложението Playgrounds.

Сега ще можете да започнете да пишете SwiftUI без Xcode!

Абсолютните основи, необходими за SwiftUI Playground, са импортирането на две библиотеки. SwiftUI е очевидно, но имате нужда и от PlaygroundSupport, което ви дава достъп до PlaygroundPage. Достъпът до текущия екземпляр PlaygroundPage ви позволява да зададете Live View, което е от съществено значение, ако искате да визуализирате интерфейса си рамо до рамо с кода си. За разлика от Preview Canvas в Xcode, с Live View в Playground винаги може да се взаимодейства и никога не се поставя на пауза. Може да се наложи да го стартирате отново, но можете също да изберете да се изпълнява автоматично, което ще ви покажа по-късно.

Това е всичко, от което се нуждаете, за да започнете с SwiftUI. Долу вдясно ще видите син бутон с надпис „Изпълни моя код“. Щракването върху това трябва да ви даде разделен изглед, който показва низа, който сте предали на вашия текст. Текстът е центриран по подразбиране и поставянето му във VStack ни позволява да добавим до десет подизгледа, които ще бъдат разположени вертикално. Ако имахме много контроли, може би щяхме да използваме List или Form, които правят същото с добавяне на автоматично превъртане, когато съдържанието стане твърде голямо за екрана.

Добавяне на свойствата

Ще ни трябват някои свойства, за да съхраняваме състоянието на нашите контроли. Това означава, че те трябва да бъдат маркирани като State, което означава свойство, което може да се промени и впоследствие да доведе до преначертаване на целия изглед. В крайна сметка искаме потребителският ни интерфейс да реагира, когато променим нещата, а не просто да остане същият. Всяко от нашите свойства се отнася до контрола, която ще създадем в края. Тези свойства ще трябва да бъдат във вашата структура, но преди декларацията на свойството body, което връща „някакъв изглед“. „Някакъв изглед“ е основно изискване променливата да връща всеки конкретен тип, който съответства на протокола за изглед.

Bool redButton ще съхранява състоянието на Button, който превключва между син и червен текст. Не е изненадващо, че step цяло число е за Stepper. Ще скрием и покажем тайно съобщение с помощта на Toggle и showSecret. Каквото и да въведете в TextField, ще бъде съхранено в низа text и накрая стойността на Slider ще бъде съхранена в slide. Ако не сте наясно как работят обвързванията в SwiftUI, ние няма да пишем код за задаване на тези стойности в затваряне.

Вместо това, свойствата ще бъдат обвързани с контролите по такъв начин, че промяната на контролите ще промени съответните свойства и обратно. Ако Toggle е включен, например, можете да сте напълно сигурни, че това отразява действителното състояние на основните данни. Това прави много по-лесно създаването на потребителски интерфейси, които ни казват точно какво се случва. Освен това намалява вероятността от грешки, когато забравим да настроим свойствата си според състоянието на потребителския интерфейс!

Добавяне на контролите

Надяваме се, че е очевидно какво правят всички тези контроли сега. Тъй като са обвързани със свойствата на състоянието, тези контроли могат да променят потребителския интерфейс динамично. Ако щракнете върху „Изпълни моя код“ отново, ще можете да взаимодействате с всички контроли и да видите промените сами.

Следващи стъпки

Има много качествени ресурси, от които да се учите. Всеки път, когато сте объркани как да декларирате някоя от вградените контроли, препоръчвам да потърсите тази контрола в „Hacking With Swift“. Когато сте по-уверени в уменията си за SwiftUI и искате да експериментирате с по-разширени функции, отидете в SwiftUI Lab.

Големи промени вероятно ще дойдат в SwiftUI на WWDC през юни 2020 г., така че би било добра идея да сте възможно най-уверени в настоящата му форма, преди да получи още повече функции!