Ios 14 как украсить рабочий стол

Подборка полезных приложений iOS 14 с собственными виджетами

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

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

Spark

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

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

Кстати, кроме Spark разработчики из Readdle Inc. обновили и другие свои приложения. Апдейты вышли для PDF ридера PDF Expert, файлового менеджера Documents и продвинутого календаря Calendars. Все перечисленные приложения получили поддержку iOS 14 и свои функциональные виджеты.

CARROT Weather

Не стали затягивать с выпуском обновления и разработчики необычного погодного информера под названием CARROT Weather. Отличительной особенностью утилиты являются забавные иллюстрации. Например, если на экране прогноза погоды появились улыбающиеся пингвины – знайте скоро за окном пойдет снег. Одной из сильных сторон программы являются точные прогнозы, которые подтверждаются в 85-90% случаев. Кроме этого в приложении есть много самой разной погодной информации.

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

Единственным недочетом CARROT является необходимость оформлять подписку. Без нее возможности приложения ограничены.

Things 3

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

Виджеты же выполнены в нескольких «размерах» и с их помощью пользователи могут просматривать планы на день или неделю, выводить на домашний экран приоритетные задачи, фильтровать списки по тегам и т.д.

MusicHarbor

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

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

Unwind

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

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

DuckDuckGo

Сразу после выхода финальной версии iOS 14 популярный браузер DuckDuckGo, который может блокировать практически все сервисы-трекеры, заставляет сайты по возможности использовать зашифрованные соединения и убирает рекламу на посещаемых страницах, получил небольшое обновление.

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

Aviary

Aviary – это функциональный сторонний Twitter-клиент, который может понравиться любителям Tweetbot. В приложении есть достаточно много разнообразных настроек, продвинутые фильтры для поиска, возможность прикреплять к твитам различные изображения и рисунки, а также многоколоночный интерфейс в iPad-версии.

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

Как изменить иконки приложений на ios 14 – iPhone, iPad

Как изменить иконки приложений на ios 14 - iPhone, iPad

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

Также в качестве бонуса вы сможете скачать набор иконок для ios 14, которые мы собрали специально для вас.

Как всё устроено?

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

После выхода новой IOS 14, которая стала доступна с 15 сентября 2020 года, появилось множество возможностей и одна из таких возможностей это размещение своих иконок на экране “Домой”.

Принцип работы таких иконок заключается в редактирование команд в стандартном приложении от Apple “Команды”.

Ранее, это приложение было и на IOS 13, но не было возможности помещать команды прямо на рабочий стол, только в раздел “Виджеты”.

С новым обновлением такая возможность появилась, так-как помимо своих иконок вы можете добавлять и виджеты от стандартных приложений Apple и также от сторонних.

Но в этой статье мы не будем освещать все прелести IOS 14, поговорим только об одной, это смена иконок на абсолютно любом приложении.

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

По факту, вы создаете определенные команды и присваиваете этой команде иконку, чтобы было можно быстрее ее найти на рабочем экране устройства.

То что будет размещено у вас на рабочем экране будет называться “закладка”, а не приложение. С помощью виджета “закладки” вся магия и будет происходить.

Процесс замены иконки

Разобьем процесс смены на несколько частей, чтобы вам было удобно и вы сделали всё правильно.

Создание новой папки в приложении “Команды”

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

Заходим в приложение “Команды”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Нажимаем на стрелочку в левом углу.

Как изменить иконки приложений на ios 14 - iPhone, iPad

В правом верхнем углу нажимаем на иконку в виде папки.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Назовите свою папку как угодно и нажмите “добавить”. В нашем случае мы назовем папку “websoftex”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Теперь у вас есть своя папка, давайте нажмем на нее.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Создание новой команды в приложении “Команды”

После перехода в созданную вами папку нажимаем на плюс в правом верхнем углу.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Теперь нажмите на кнопку “Добавить действие” или ниже вы можете воспользоваться сразу поиском. Два варианта полностью идентичны.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Следующем шагом будет выбор действия, что мы хотим сделать. В нашем примере мы сделаем иконку, которая после нажатия на неё будет открывать наш сайт websoftex.ru.

Выбираем первый вариант под названием “Приложения”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

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

Как изменить иконки приложений на ios 14 - iPhone, iPad

После выбора браузера Safari нужно написать адрес url, для этого выберем пункт “Открыть URL”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Чтобы ввести URL сайта, нужно нажать на URL-адрес и указать путь до конкретного сайта. В нашем случае это https://websoftex.ru

Как изменить иконки приложений на ios 14 - iPhone, iPad

После ввода URL адреса сайта, нажмите на иконку справа вверху “…”

Как изменить иконки приложений на ios 14 - iPhone, iPad

Введите название вашей команды. В нашем примере мы напишем “открыть websoftex”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Изменение иконки команды в приложении “Команды”

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

  • Как изменить иконки приложений на ios 14 - iPhone, iPad
  • Как изменить иконки приложений на ios 14 - iPhone, iPad 1

Отлично, мы создали с Вами свою иконку.

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

Добавление своей картинки для иконки в приложении “Команды”

Для этого нажмите на кнопку “Добавить на экран Домой”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

Затем нажмите слева на иконку и выберите нужный пункт. В нашем случае картинка располагается в фото, поэтому мы выбираем пункт “Выбрать фото”.

  • Как изменить иконки приложений на ios 14 - iPhone, iPad 2
  • Как изменить иконки приложений на ios 14 - iPhone, iPad

Выбираем нужную картинку и делаем обрезание по вкусу. В данном случае мы оставим как есть. После этого нажимаем кнопку “Выбрать”.

Как изменить иконки приложений на ios 14 - iPhone, iPad

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

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

Как изменить иконки приложений на ios 14 - iPhone, iPad

Нажимаем кнопку “Готово” и выходим на рабочий экран путем нажатия кнопки “Home” и видим нашу только что созданную иконку закладки.

Если мы нажмем на нашу иконку из нашего примера, то сразу после нажатия откроется наш сайт.

На этом процесс смены иконки завершен. Теперь вы знаете, как создавать свои иконки.

Как видите всё работает.

Минусы кастомной иконки

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

Это происходит достаточно быстро, но не заметить этого невозможно.

Возможно, что в следующих обновлениях это исправят.

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

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

Делаем свой Widget в iOS 14

В iOS 14 и macOS 11 Apple представили Widgets. Еще один способ взаимодействия пользователя с приложением. В данной статье рассмотрим основные принципы работы WidgetKit и интегрируем свой Widget в готовый проект.

Введение

Что такое Widget?

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

Widgets галерея

Пользователи могут найти виджеты в галерее виджетов, там же они могут выбрать размер для виджета. Всего есть 3 размера для виджетов: small, medium и large.

Для того чтобы добавить виджет на экран нужно войти в режим редактирования домашнего экрана и нажать на плюсик в верхнем левом углу, откроется галерея, где будут представлены виджеты приложений, но только от тех приложений, которые их поддерживают. При нажатии на конкретный виджет можно будет выбрать его тип и его размер, например приложение Stocks имеет 2 типа виджетов Watchlist и Symbol, причем для Watchlist представлены все 3 размера, а для Symbol только один.

Основные принципы

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

  • Придерживайтесь одной идеи. Главная идея вашего приложения должна быть отображена в вашем виджете. Например приложение Weather может показывать погоду для одной локации, приложение Stocks последние котировки акций.
  • Для каждого размера показывайте только ту информацию, которая прямо относится к вашей идее. Для Stocks это может быть отображение только 3-х акций для маленького размера с указанием только названия и цены, а для большого размера это будет отображение более 5 акций с более детальной информации по ним.
  • Не создавайте виджет, который ничего не делает, а только открывает приложение. Пользователь ожидает возможность просмотра важной информации без открытия приложения.
  • Сделайте поддержку нескольких размеров, это улучшит пользовательский опыт. Реализация одного маленького размера приведет к тому, что на бОльших размерах много свободного пространства будет не задействовано, что не придает привлекательности приложению.
  • Информация показанная на виджете должна меняться в течении дня. Если информация будет статичной или будет меняться очень редко, то будет ли польза от такого виджета? Поэтому важно чтобы информация менялась в течении дня, для приложения Calendar это будут предстоящие митинги, для Weather текущая погода.

Конфигурация виджета

  • Позвольте пользователю конфигурировать виджет, когда это имеет смысл. Например для Weather можно выбрать город, откуда будет показываться погода, для Stocks доступен выбор акции, котировки который вы хотите мониторить.
  • Когда нажимаете на виджет, убедитесь что открывается нужный экран приложения. Если нажали на пару USD/RUB в Stocks от должен открыться экран с детальной информацией по этой паре, а не какая-то другая.
  • Избегайте большого количества нажимаемых элементов на виджете. Можно иметь несколько элементов на которые можно нажать, но тут надо быть аккуратным, чтобы у пользователя не возникло проблем с попаданием пальцем на нужный элемент виджета.

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

Обновление виджета

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

Дизайн виджета

Пройдемся кратко по дизайну.

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

  • Рассмотрите использование шрифта SF Pro. Согласитесь, что приятно, когда все виджеты на домашнем экране имеют одинаковый шрифт, а не когда у каждого свой.
  • Используйте текстовые элементы в виджете. Убедитесь, что текст масштабируется нормально, не растрируйте его, иначе это приведет к проблем с VoiceOver.
  • Проектируйте реалистичную превьюшку для отображения в галерее виджетов. Покажите какими возможностями обладает этот виджет, вы так же можете отобразить реальные данные здесь, но если загрузка этих данных занимает много времени, то может просто заменить моками.
  • Используйте скелетоны, чтобы дать понять пользователю структуру виджета. Виджет показывает скелетон, когда данные все еще загружаются.

  • Напишите короткое, но емкое описание для виджета. В Галереи виджетов есть описание для каждого виджета, что именно он делает. Рекомендуется начинать это писание с глагола, например "Следить за предстоящими митингами", "Посмотреть погоду в указанной местности" и т.д.

Поддержка различных размеров экранов

Виджеты масштабируются к размеру экрана на различных устройствах, начиная с iPhone 6s заканчивая iPhone 11 Pro Max.

  • Убедитесь что картинки, соответствуют размерам виджета. Ниже представлена таблица с размерами виджетов.

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

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

Smart Stack

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

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

Встречаем WidgetKit

Определение

WidgetKit позволяет пользователю получить доступ к возможностям вашего приложения с помощью вынесения виджета на iOS Home screen или в macOS Notification Center.
С тремя различными размерами для виджета (small, medium, large) у пользователя есть выбор, сколько именно информации он хочет видеть.

Создание Widget’a

Чтобы создать свой виджет, вам нужно добавить Widget Extension к своему приложению. Сам контент виджета создается с помощью SwiftUI, чтобы настроить виджет используется Timeline Provider, он используется для того, чтобы сказать виджету когда ему обновлять свой контент.

Чтобы позволить пользователю конфигурировать виджет вы добавляете свой SiriKit intent definition, остальное сделает WidgetKit за вас и предоставит пользователю кастомизированный интерфейс.

Создаем Widget extension

Итак представим у нас есть iOS приложение и теперь мы хотим добить поддержку виджетов, рассмотрим шаг за шагом, как это можно сделать.

Определение главной идеи для виджета

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

Приложение

Существующий проект

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

Добавление виджета в проект

Для того чтобы добавить виджет в приложение нужно выбрать File -> New -> Target, на вкладке iOS выбираем Widget Extension, даем имя нашему виджету, например LadderWidget . В проект добавится новый таргет, также файл LadderWidget.swift, где будет сразу добавлены все необходимые классы. Уже начиная с этого моменты, можно запустить виджет, выбрав соответствующий таргет, и увидеть результат на экране симулятора.

Основные классы

Рассмотрим какие классы создал для нас Xcode.

  • LadderWidget
  • LadderWidgetEntryView
  • Provider
  • SimpleEntry

Как мы увидим, на самом деле это не классы, а структуры, кратко пройдемся по каждой из этих структур.

  • SimpleEntry — слепок, который содержит данные для отображения их на виджете;
  • Provider — предоставляет таймлайн из слепков для виджета;
  • LadderWidgetEntryView — View для виджета, тут определяется как будет выглядеть виджет;
  • LadderWidget — наследник Widget , это непосредственно и есть наш виджет.

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

Проведем небольшой рефакторинг и переименуем наши структуры.

LadderEntry

Данные для виджета определяются именно в этой структуре путем добавления соответствующих свойств.

То есть если ваш виджет будет показывать, например, погоду, то у вас скорее всего будут свойства let cityName: String , let cityTemperature: Double , ну и let date: Date , последнее свойство определяет дату когда WidgetKit обновит виджет и является обязательным, чтобы следовать протоколу TimelineEntry .

LadderProvider

Кто-то должен предоставлять LadderEntry для виджета и за это ответственен LadderProvider . Эта структура следует протоколу TimelineProvider , взлянем на определение.

  • placeholder(in context: ) — возвращает слепок, который будет использоваться как отображения шаблонной версии виджета.
  • getSnapshot(in context: , completion:) — возвращает слепок, который представляет текущее время и состояние виджета.
  • getTimeline(in context: , completion:) — возвращает массив слепков в виде таймлайна для текущего времени и будущих случаев обновления виджета.

LadderWidgetEntryView

Это обычное View , которое определяет, как будет выглядеть наш виджет.

LadderWidget

LadderWidget — наследник Widget , если посмотреть на определение протокола Widget , то можно заметить, что оно сильно напоминает обычный View , так же через body определяется контент виджета, но тут также указывается, как виджет будет конфигурироваться статически или динамически, а также здесь указывается провайдер для виджета.

  • .configurationDisplayName(_) указывает название виджета в галерее виджетов;
  • .description(_) указывает описание в галерее виджетов;
  • .supportedFamilies(_) указывает какие размеры будет поддерживать виджет, если не указать, то будут поддерживаться все размеры.

@main перед определением виджета обозначает "точку входа" для данного таргета, а именно то, что при запуске будет показан именно Ladder Widget.

Ladder Widget начало

Размеры виджета — .widgetFamily

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

Начнем с LadderEntry , для этого добавим соответствующую поле.

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

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

С помощью @Environment(\.widgetFamily) можно получить доступ к размеру виджета и в зависимости от значения показывать просто текст для маленького размера или картинку и текст для среднего размера.

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

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

Конфигурация виджета — IntentConfiguration

Чтобы добавить динамическую конфигурацию, нужно в LadderWidget заменить StaticConfiguration на IntentConfiguration , для этого нажимаем File -> New -> File -> SiriKit Intent Definition File. Называем файл LadderIntents.intentdefinition.

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

Гуд, теперь создадим сам Intent , нажимаем на плюсик и кликаем New Intent, называем его ProfileSelection и конфигурируем, как показано на картинке.

Xcode под капотом сгенерирует для нас класс ProfileSelectionIntent . Теперь заменим конфигурацию в нашем LadderWidget .

Компилятор будет ругаться, что LadderProvider не следует протоколу IntentTimelineProvider , исправляем это, для этого просто следуем протоколу IntentTimelineProvider вместо TimelineProvider и обновляем сигнатуры функций соответственно.
Раз мы добавили ProfileSelectionIntent , значит пора его где-то использовать, то есть в зависимости от выбранного профиля наш провайдер должен отдавать соответствующий LadderEntry . Обновим наш getTimeline(for configuration:, in context:, completion:)

Теперь у виджета появится кнопка Edit Widget и выбор отображаемого профиля для виджета.

Показ Placeholder’a

Когда WidgetKit отображает виджет первый раз, он показывает вью виджета как placeholder. Вью Placeholder view показывает общую структуру вашего виджета, как бы давая пользователю понять, что будет отображено на виджете. WidgetKit вызывает placeholder(in:) у провайдера чтобы получить слепок для placeholder’a.

WidgetKit использует redacted(reason:) модификатор, чтобы показать вью как placeholder.
Для того, чтобы понять, как будет выглядеть наш виджет в данном случае давайте создадим LadderWidgetPlaceholderView .

То есть мы просто показываем вью нашего виджета и применяем к нему модификатор .redacted(reason: .placeholder) . Если есть необходимость не показывать какие-то отдельные элементы вью как placeholder, то можно использовать оператор .unredacted() для них.

Более подробно про работу placeholder’ов можно прочитать у Majid Jabrayilov здесь.

Данные для Ladder Widget

Данные для виджета предоставляет LadderProvider , пройдемся более подробно по его функциям.

Плейсхолдер

Тут все просто, просто возвращаем слепок для плейсхолдера.

Таймлайн

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

По сути таймлайн это просто структура, которая содержит массив слепков и объект полиси.

Как мы помним, слепок здесь это наша структура LadderEntry , у которой есть date и собственно данные для виджета, так вот эта date и определяет когда виджет будет обновлен в будущем.

Можно например сгенерировать таймлайн, где виджет будет обновляться каждые 3 секунды на протяжении 1 минуты.

Что будет когда закончится эта 1 минута? Это зависит от того, что указано в policy объекта структуры TimelineReloadPolicy .

  • atEnd — WidgetKit запросит новый таймлайн;
  • never — само приложение скажет WidgetKit’у когда обновить виджет;
  • after(_ date: ) — определяет точную дату, когда WidgetKit запросит новый таймлайн.

Текущий снапшот

Осталась одна функция в провайдере, которую осталась описать.

В ней мы возвращает слепок, который представляет текущее время и состояние виджета. По сути реализация мало чем отличается от getTimeline() , но есть один момент который стоит упомянуть.

WidgetKit вызывает этот метод, когда виджет появляется в разных переходах и так же в галерее виджетов, тогда context.isPreview == true . В этом случае нужно вызвать комплишен как можно быстрее, допускается возвращать заранее приготовленные данные, если загрузка реальных данных может занять больше пары секунд.

На симуляторе, это будет выглядеть вот так

Ladder Widget больше фич

WidgetBundle

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

Важный момент здесь, что точка входа может быть только одна, то есть @main должен быть только один и стоять перед WidgetsBundle .

Здесь Xcode может бросить ошибку:

Чтобы это поправить нужно пойти Edit Scheme виджет таргета и поправить значение свойства _XCWidgetKind .

Запускаем симулятор снова и видим, что теперь мы можем выбрать еще один виджет для приложения.

IntentHandler

Что если, когда мы редактируем виджет мы хотели бы иметь не статические параметры, а динамические? Которые мы могли бы, скажем, загружать с сервера?

Виджеты позволяют это сделать и для этого нужно будет создать Intents Extension таргет, создать файл .intentdefinition и в нем определить опции выбора и далее в классе IntentHandler` обработать колбек выбора опции.

Итак начнем, создаем новый таргет New -> Target -> Intents Extension и даем ему имя например LadderWidgetIntent. Далее руками создаем DynamicLadderIntents.intentdefinition. Его конфигурация будет похожа на LadderIntents.intentdefinition, но с небольшими отличиями.

Вместо Enum у нас будет конкретный тип ProfileType , сам intent будет называться DynamicProfileSelection и так же нужно проставить галочку динамически загружать опции.

Теперь везде в проекте нужно заменить ProfileSelectionIntent на DynamicProfileSelectionIntent .

Xcode автоматически для нас генерирует класс ProfileType , а также протоколы выбора конкретного профиля. Тем самым мы получаем тот самый колбек для загрузки конфигурации.

Поправляем функцию profile(for _:) в провайдере и теперь наша конфигурация подтягивается динамически.

Передача данных между виджетом и приложением

iOS предоставляет несколько способов передачи данных между виджетом и приложением.

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

Принудительное обновление виджета

Приложение может обновить свой виджет не дожидаясь, когда это сделает система, с помощью WidgetCenter.

Еще пару слов

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

Вопрос: Можно ли использовать готовые UIKit вьюшки в виджетах?
Ответ: Нет, виджеты работают только на чистом SwiftUI, даже если вы обернете UIKit вьюшку в SwiftUI вью, то да код скомпилируется, но на устройстве вы увидите просто желтый экран заглушку.

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

Заключение

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

Как изменить иконки в iOS 14, и зачем это вообще может быть нужно

Переработанные виджеты — одно из самых главных изменений обновления iOS 14. Они появились в системе еще несколько лет назад, но теперь ими можно пользоваться не только на отдельной панели, а на любой странице рабочего стола, в любом месте экрана.

Apple наверняка планировала, что такое решение поможет пользователям более тонко настроить iPhone под себя, в том числе повысив за счет этого продуктивность: например, устанавливая интерактивные виджеты с заметками, списком задач и расписанием встреч. Но что-то пошло не так.

Практически никто не использует их по делу — все пробуют изменить дизайн рабочих столов так, чтобы привычный интерфейс iOS не узнали даже разработчики Apple. И нужно для этого всего ничего: полчаса времени, пара бесплатных приложений и (желательно!) врожденное чувство стиля. А через системную программу «Команды» можно еще и все иконки поменять!

Одни, скучая по скевоморфизму, воссоздают iOS 6, другие превращают iPhone в эстетичный скетчбук или даже неоновую вывеску:

Скриншоты @iup_date, @TomHarveey и @roseadiance

Вариантов кастомных оформлений iOS 14 в сети уже десятки тысяч (ну вот еще пример — стилизация под Windows 95), и если вам тоже хочется разнообразить приевшийся дизайн iOS, держите гайд.

Меняем значки iOS на любые другие
  • Откройте приложение «Команды» и нажмите на «+» вверху справа;
  • Теперь выбираем «Добавить действие» и вводим в поиск «Открыть приложение»;
  • В появившемся окне «Скрипты» нажмите на «Выбрать»;
  • Выбираем нужное приложение, а затем жмем на три точки вверху справа;
  • Теперь пункт «Добавить на экран Домой» и занимаемся оформлением:
    • Нажмите на подсвеченную синим иконку и выберите изображение, которое будет использоваться в качестве значка приложения;
    • В поле «Новая команда n» введите имя иконки — чтобы не запутаться, лучше написать название самой программы;

    Подробно в картинках:

    Как изменить иконки iOS 14 Как изменить иконки iOS 14 Как изменить иконки iOS 14 Как изменить иконки iOS 14 Как изменить иконки iOS 14

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

    Оригинальные значки можно спрятать в «Библиотеку приложений»: нажмите и удержите палец на программе, тыкните на «–» и выберите «Переместить в Библиотеку приложений».

    P.S. Конечно, это не системный способ смены иконок, поэтому он работает с помощью «костыля». При запуске приложения у вас всегда сначала откроются «Команды», а только потом программа, которая вам нужна:

    И если на новых Айфонах это происходит почти мгновенно, владельцам моделей постарше придется ждать 2-3 секунды, а то и больше.

    С виджетами все проще

    Наибольшую популярность в кастомизации iOS 14 набрало приложение Widgetsmith. С его помощью можно создать виджет любого размера в собственном стиле: например, разместить в нем изображение или календарь с фоном из своего селфи.

    Как изменить иконки iOS 14

    Интерфейс в программе очень простой и разбираться с функциями не придется: создаете виджет, выбираете фон, рамку, шрифт, действие по тапу и готово. Еще можно попробовать чуть более простые аналоги Color Widget и Photo Widget.

    И немного вдохновения

    Чтобы перерабатывать рабочие столы было легче, можно подсмотреть идеи кастомизации у других. Некоторые из них очень странные, а другие очень даже ничего:

    Как создать собственные виджеты на iOS 14?

    Одно из самых больших обновлений, появившихся в iOS 14 – это абсолютно новый интерфейс домашнего экрана. Пожалуй, такое изменение пользовательского интерфейса для iOS можно считать самым значимым с момента появления системы. Особенное внимание привлекли виджеты, которые можно будет располагать на домашнем экране iPhone в iOS 14. С помощью виджетов можно своевременно получать информативные уведомления от избранных приложений.

    В iOS 14 можно использовать виджеты на экране «Домой», чтобы нужная информация всегда была у вас под рукой. Или же можно использовать виджеты из представления «Сегодня», смахнув пальцем вправо на экране «Домой» или экране блокировки.

    Если вас не устраивают стандартные виджеты iPhone, вы можете создать собственные с помощью приложения Widgetsmith.

    Widgetsmith пришел от Дэвида Смита, который является разработчиком нескольких популярных приложений для Apple Watch и iPhone, в том числе Watchsmith, Sleep ++ и Pedometer ++. Концепция Widgetsmith заключается в том, что он позволяет создавать собственные и персонализированные виджеты для домашнего экрана iOS 14.

    Как пользоваться Widgetsmith

    1. Установите приложение .

    2. Откройте приложение и выберите “Settings” -> “Permissions“.
    3. Разрешите приложению доступ к функциям, которые вы хотите использовать (календарь, уведомления, галерея).
    4. Далее перейдите в раздел “My widgets“.
    5. Нажмите “Add (size) widget“, чтобы добавить новый виджет.
    6. Нажмите на иконку предварительного просмотра виджета.
    7. В открывшейся вкладке кликните на “Style“, чтобы выбрать стиль виджета.
    8. Нажмите на “Font“, чтобы выбрать шрифт и “Tint Colour“, чтобы выбрать цвет.
    9. Вернитесь назад и тапните “Save“, чтобы сохранить виджет.
    10. Перейдите на домашний экран iPhone, чтобы добавить виджет.
    11. Нажмите на экран и удерживайте, затем кликните на кнопку “+“.
    12. Выберите из списка виджетов приложение Widgetsmith.
    13. Нажмите “Add Widget“, чтобы добавить виджет.
    14. Выберите созданный вами виджет, чтобы разместить его на домашнем экране.

    Также в приложении вы можете выбрать размер виджета: большой, средний или маленький.

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

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

    Почему не работает Widget Smith?

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

    Если ваш Widget Smith не работает должным образом, вы можете исправить это, применив следующие методы:

    Обновите виджет

    Прежде всего, просто попробуйте обновить виджет. Для этого необходимо на него нажать.

    Используйте виджет отдельно

    Если вместо виджета вы видите только серое окно, возможно проблема возникла при соединении системного виджета и виджета созданного с помощью Widget Smith. Чтобы узнать наверняка, создайте новый виджет этого же приложения не используя Widget Smith, и если он будет работать, то проблема со стороны Widget Smith.

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

    Убедитесь, что настройки приложения правильные

    Может случиться так, что проблема не в самом виджете а в оригинальном приложении. К примеру, если вы создали виджет “Погоды”, а он вам ничего не показывает, убедитесь что в самом приложении “Погоды” все настройки установлены верно, в частности ваше местоположение. В противном случае виджет работать не будет.

    Подправьте размер и шаблон

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

    Попробуйте что-то другое

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

    Удалите и поставьте заново

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

    Как сделать русский язык в приложении widget smith?

    Никак. К сожалению, пока что оно имеет исключительно английский язык. Поэтому, если что-то непонятно, просто используем Google Translate.

    Источники:

    https://prostomac.com/2020/09/podborka-poleznyx-prilozhenij-ios-14-s-sobstvennymi-vidzhetami/
    https://websoftex.ru/kak-izmenit-ikonki-prilozhenij-na-ios-14-iphone-ipad/
    https://habr.com/ru/post/519146/
    https://808.media/izmenit-ikonki-v-ios-14/
    https://rucore.net/kak-sozdat-sobstvennye-vidzhety-na-ios-14/

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

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