SwiftUI: как ускорить мобильную разработку под iOS

iOS

SwiftUI: как ускорить мобильную разработку под iOS

Для разработки iOS-приложений используют два фреймворка: UIKit и SwiftUI. Считается, что UIKit проверен времен и хорошо изучен, за счёт чего обеспечивает предсказуемый и прогнозируемый результат. SwiftUI — сравнительно новый инструмент, призванный увеличить скорость производства кода. В статье разберём его особенности и проанализируем, насколько это удачное решение для бизнеса.

Что такое SwiftUI

SwiftUI — декларативный фреймворк от Apple, который появился на рынке в 2019 году как потенциальная замена сложного и громоздкого UIKit. Он работает на основе языка программирования Swift и подходит для вёрстки пользовательских интерфейсов под iOS, macOS, watchOS, tvOS, iPadOS и visionOS. Платформа сокращает сроки разработки и позволяет создавать функциональные и отзывчивые мобильные приложения с минимальным количеством кода.

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

Характеристики SwiftUI

Рассмотрим ключевые характеристики SwiftUI.

Декларативность

Выделяют два подхода к программированию: императивный и декларативный.

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

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

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

Сравнение декларативного и императивного подхода к решению задач

Кроссплатформенность

SwiftUI — кроссплатформенный фреймворк. Он подходит для создания ПО одновременно для разных операционных систем Apple. Разработчики пишут код один раз и оптимизируют под специфику разных платформ только некоторые компоненты вёрстки. Например, для Apple TV или Apple Watch адаптируют пользовательский интерфейс под разное разрешение экранов.

Интеграция с Xcode

Xcode — специальная интегрированная среда для создания мобильных приложений под операционные системы Apple. Она предоставляет инструменты для разработки полного цикла: графический редактор, редактор кода, отладчики, симулятор и компилятор. С её помощью можно создавать пользовательские интерфейсы, тестировать приложения и загружать их в App Store.

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

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

Поддержка анимаций

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

SwiftUI по умолчанию использует Core Animation для рендеринга. Движок оптимизирует перерисовку, ускоряет загрузку графики, повышает производительность и отзывчивость приложения.

Плюсы и минусы SwiftUI

Чтобы сделать выбор в пользу того или иного фреймворка на проекте, важно знать сильные и слабые стороны инструмента. Разберём плюсы и минусы SwiftUI.

Плюсы SwiftUI

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

Современный синтаксис. SwiftUI вобрал в себя современные возможности языка Swift, которые делают код более компактным. Например, в Swift 5.1 появился механизм Function Builder, который позволяет писать приложения без лишних символов и пунктуации. Простой синтаксис и сокращение объёма кодовой базы снижают количество багов в приложении. Чем меньше строк в коде, тем ниже вероятность возникновения ошибок.

Кроссплатформенность. SwiftUI позволяет создавать мультиплатформенные приложения с единой кодовой базой и адаптировать их для каждой группы девайсов. Это обеспечивает единообразие интерфейса на разных платформах, сокращает сроки вывода продуктов на рынок и экономит бюджет. Без SwiftUI придётся проектировать несколько сервисов и использовать разные фреймворки: UIKit для iOS, AppKit для Mac, WatchKit для часов.

Гибкость и мощность. У SwiftUI мощная система модификаторов для стилизации компонентов. С их помощью можно редактировать размер и цвет элементов, менять шрифт текста, добавлять тени к объектам, настраивать анимацию и другие эффекты. Это позволяет создавать уникальные визуальные решения, адаптировать интерфейсы под фирменный стиль компаний, делать их дружелюбными и интуитивно понятными для пользователей.

Автоматическое обновление интерфейса. Разработчики связывают между собой компоненты и данные, что приводит к автоматической перерисовке интерфейса в ответ на действия пользователей. Это улучшает производительность и отзывчивость приложения. Например, если пользователь добавит новую задачу в to-do list, она сразу появится в конце списка. Для этого не придётся перезагружать приложение.

Минусы SwiftUI

Ограниченная поддержка старых версий iOS. Фреймворк доступен только для iOS 13 и новых версий платформы. С более ранними версиями операционной системы он несовместим. Пользователи, которые не обновили ОС на устройствах, не смогут пользоваться приложениями, которые создавались на SwiftUI.

Незрелость фреймворка. SwiftUI — относительно молодая платформа. Она поддерживает не так много библиотек, функций и инструментов, как другие фреймворки Apple. Однако она совместма с UIKit и позволяет использовать его компоненты, если они отсутствуют в SwiftUI.

В некоторых ситуациях разработчикам приходится использовать «костыли» — искать обходные пути для реализации некоторых фичей и самостоятельно разрабатывать временные решения. Например, в iOS 13 отсутствовала «ромашка» — индикатор загрузки. Программистам приходилось делать собственную эмуляцию. Однако уже в iOS 15 Apple представил нативный элемент.

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

Сравнение с альтернативами

Сравним возможности альтернативных фреймворков с функциональностью SwiftUI и разберём, какое из решений стоит выбрать.

UIKit

Как и SwiftUI, это фреймворк от компании Apple. Он создан с использованием языков программирования Objective-C и Swift и применяется для разработки iOS-приложений. Он совместим со всеми версиями операционной системы, в том числе с более ранними.

Инструмент на рынке давно, с 2007 года. На официальном сайте платформы доступны подробная документация, обширный выбор API и библиотек с готовыми компонентами для проектирования интерфейсов. А при возникновении вопросов разработчики могут обратиться за помощью к активному сообществу на форумах.

Фреймворк использует императивный подход к программированию — программисты шаг за шагом описывают, как создавать компоненты интерфейса и управлять ими. Это обеспечивает максимальную кастомизацию элементов, но снижает скорость разработки. Приложения получаются с более объёмным и подверженным ошибкам кодом по сравнению с теми, что создаются на SwiftUI. Также UIKit не поддерживает мультиплатформенную разработку, поэтому сервисы для айпадов, макбуков и часов придётся разрабатывать с нуля с помощью других фреймворков.

Кроссплатформенные решения

Кроссплатформенные фреймворки Flutter, React Native и Kotlin Multiplatform Mobile обеспечивают высокую производительность приложений. Они работают на языках Dart, JavaScript и Kotlin, в то время как SwiftUI — на языке Swift, «родном» для платформы iOS. Он предоставляет доступ к нативным API и принципам дизайна, что гарантирует лучшую производительность и пользовательский опыт.

С помощью Flutter, React Native и KMM можно разрабатывать мобильные сервисы на единой кодовой базе сразу для двух популярных платформ — iOS и Android. Предпочтение одному из этих инструментов отдают тогда, когда перед бизнесом стоит задача охватить как можно больше пользователей и сэкономить бюджет на нативной разработке. SwiftUI позволяет выпускать программы только для экосистемы Apple. Android-версию придётся создавать отдельно.

Примеры использования SwiftUI

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

Приложение заточено под iOS. Программа использует нативные возможности операционной системы или других сервисов Apple. Например, компания разрабатывает редактор фото, который интегрируется с iCloud.

Сервис ориентирован на пользователей iPhone. Они составляют большую часть целевой аудитории компании.

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

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

Кейсы приложений на SwiftUI

На SwiftUI разрабатывают приложения для разных сфер бизнеса: от финансов до e-commerce. Рассмотрим несколько кейсов.

Купер. Онлайн-сервис доставки продуктов и товаров с полок магазинов. Его первая версия создавалась на языке C# и кроссплатформенном фреймворке Xamarin. Она появилась на рынке ещё под старым названием СберМаркет. По словам разработчиков, приложение редко обновлялось, не успевало за актуальными трендами и подвисало. Чтобы не терять пользователей, команда приняла решение о перезапуске и переходе на SwiftUI. Освоить технологию и выпустить новый сервис удалось за 3 месяца. У него под капотом — многомодульная разработка. Приложение состоит из микросервисов, что обеспечивает гибкость и масштабируемость.

Интерфейс приложения «Купер»

Банки.ру. Финансовый маркетплейс, с помощью которого можно подобрать выгодные кредитные продукты, оформить страховку, подать заявку на вклад и выпуск дебетовой карты. В 2021 году его создатели приняли решение перейти с UIKit на более современный SwiftUI, перевести на фреймворк своё мобильное приложение и все новые фичи реализовывать только на нём. Разработчики поделились, что спустя несколько лет сервис успешно функционирует и развивается, а благодаря переходу на новую технологию стал удобнее в поддержки.

Интерфейс приложения «Банки.ру»

Velik. Приложение для путешественников. Поддерживает такие функции как определение текущего местоположения, рисование путей на карте, рассчёт текущей скорости, расстояния и продолжительности велопоездки.

Open Sesame. Менеджер паролей, который поддерживает синхронизацию с iCloud, AES-шифрование данных, разблокировку биометрическим кодом, кредитные и дебетовые карты.

Expense Tracker. Сервис для мониторинга расходов. Позволяет вести журнал трат, группировать их по категориям и визуализировать информацию на дашборде.

LU Cards. Приложение на стыке IT, AR и психологии. В основе идеи — метафорические карты, которые помогают человеку погрузиться в бессознательное и получить ответы на важные вопросы. С помощью фреймворка мы перевели физическую колоду в диджитал-пространство, кастомизировали элементы интерфейса и настроили сложную анимацию. В приложении доступны функции построения графиков для аналитики, календаря с раскладами и добавления физической карты пользователя по фото.

Интерфейс того самого приложения

Заключение

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

Разработка на SwiftUI позволяет экспериментировать со внешним видом и функциональностью интерфейсов, обеспечивать высокую производительность цифровых продуктов и быстро выводить их на рынок. У вас остались вопросы по внедрению фреймворка? Свяжитесь с нами — поможем найти оптимальное технологическое решение под вашу задачу.

01

Сотрудничество

Контакты

0

Мы всегда рады сотрудничеству и новым проектам.

Опишите задачу, и мы с вами свяжемся.
Или напишите в Телеграм.

Давайте знакомиться!

ВыбратьОткуда вы о нас узнали
  • Рейтинги
  • Рекомендации
  • Конференции
  • Публикации
  • Соцсети
  • Другое

Нажимая «Отправить», вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Ваша заявка успешно отправлена

Мы все изучим и скоро выйдем на связь