Media is too big
VIEW IN TELEGRAM
Hardware to Software – Building a 3D Watch Face with Metal
Janum Trivedi
источник
#ios
👉 @developer_mobila
Janum Trivedi
источник
#ios
👉 @developer_mobila
👍2
Трудности обслуживания приложений под Android
Недавно наткнулся на новость о том, что количество приложений в Google Play Store сократилось на 47%.
Я сам энтузиаст разработки под Android и последние 5 лет работал над альтернативой для Google Play Music и Podcast под названием MusicSync. Так что, будучи близким к теме человеком, мне захотелось поделиться своим опытом обслуживания приложений и заодно пояснить, почему меня эта новость нисколько не удивила.
У меня есть несколько сторонних проектов, базирующихся на бэкенд-сервере с ограниченным веб-интерфейсом, и их обслуживание требует намного меньше усилий.
Если же говорить о приложении Android, то обслуживать его в качестве хобби-проекта гораздо хлопотнее. Вот некоторые из проблем, с которыми мне приходилось сталкиваться:
https://habr.com/ru/companies/ruvds/articles/919434/
original https://ashishb.net/programming/maintaining-android-app/
#Android
👉 @developer_mobila
Недавно наткнулся на новость о том, что количество приложений в Google Play Store сократилось на 47%.
Я сам энтузиаст разработки под Android и последние 5 лет работал над альтернативой для Google Play Music и Podcast под названием MusicSync. Так что, будучи близким к теме человеком, мне захотелось поделиться своим опытом обслуживания приложений и заодно пояснить, почему меня эта новость нисколько не удивила.
У меня есть несколько сторонних проектов, базирующихся на бэкенд-сервере с ограниченным веб-интерфейсом, и их обслуживание требует намного меньше усилий.
Если же говорить о приложении Android, то обслуживать его в качестве хобби-проекта гораздо хлопотнее. Вот некоторые из проблем, с которыми мне приходилось сталкиваться:
https://habr.com/ru/companies/ruvds/articles/919434/
original https://ashishb.net/programming/maintaining-android-app/
#Android
👉 @developer_mobila
👍3
Media is too big
VIEW IN TELEGRAM
Interactive Snippets
In this video, I’ll demonstrate how to create interactive Snippets for App Intents using its new APIs in Xcode 26 and SwiftUI.
источник
#ios
👉 @developer_mobila
In this video, I’ll demonstrate how to create interactive Snippets for App Intents using its new APIs in Xcode 26 and SwiftUI.
источник
#ios
👉 @developer_mobila
👍2
Media is too big
VIEW IN TELEGRAM
Навигация в будущее с Jetpack Navigation 3 — основные концепции
Изучите ключевые концепции Jetpack Navigation 3 и узнайте, как эта библиотека упрощает навигацию в приложениях на Compose. Разберитесь, как новая библиотека помогает создавать надёжные и гибкие системы навигации, опираясь на подход с управлением состоянием и предоставляя строительные блоки для различных сценариев использования.
Таймлайн:
* 0:00 — Вступление
* 1:05 — Что такое навигация?
* 2:08 — Согласованная архитектура
* 4:40 — Требования к навигации
* 5:26 — Почему это сложно
* 7:01 — Цели Navigation 3
* 9:02 — Управление backstack'ом
* 10:04 — Будущее
#Android
👉 @developer_mobila
Изучите ключевые концепции Jetpack Navigation 3 и узнайте, как эта библиотека упрощает навигацию в приложениях на Compose. Разберитесь, как новая библиотека помогает создавать надёжные и гибкие системы навигации, опираясь на подход с управлением состоянием и предоставляя строительные блоки для различных сценариев использования.
Таймлайн:
* 0:00 — Вступление
* 1:05 — Что такое навигация?
* 2:08 — Согласованная архитектура
* 4:40 — Требования к навигации
* 5:26 — Почему это сложно
* 7:01 — Цели Navigation 3
* 9:02 — Управление backstack'ом
* 10:04 — Будущее
#Android
👉 @developer_mobila
👍3❤1
Хроника изменений API фоновой работы в Android
Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наше приложение выполняет важную задачу — хранит воспоминания пользователей. Для этого необходимо уметь правильно работать с файлами в фоне, чтобы не только надёжно хранить те самые воспоминания, но и быстро их загружать, редактировать и делиться. В этой статье я расскажу о том, как мы пришли к нашим современным методам фоновой работы в Android.
https://habr.com/ru/companies/vk/articles/916466/
#Android
👉 @developer_mobila
Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наше приложение выполняет важную задачу — хранит воспоминания пользователей. Для этого необходимо уметь правильно работать с файлами в фоне, чтобы не только надёжно хранить те самые воспоминания, но и быстро их загружать, редактировать и делиться. В этой статье я расскажу о том, как мы пришли к нашим современным методам фоновой работы в Android.
https://habr.com/ru/companies/vk/articles/916466/
#Android
👉 @developer_mobila
👍2❤1
Media is too big
VIEW IN TELEGRAM
SwiftUI App Shortcuts
В этом видео я покажу, как можно создать ярлыки для приложений, которые будут отображаться в приложении Shortcuts, используя SwiftUI.
источник
#ios
👉 @developer_mobila
В этом видео я покажу, как можно создать ярлыки для приложений, которые будут отображаться в приложении Shortcuts, используя SwiftUI.
источник
#ios
👉 @developer_mobila
👍2
📲 Как сделать так, чтобы пользователи всегда возвращались туда, где они остановились в приложении?
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLjn0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLjn0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
This media is not supported in your browser
VIEW IN TELEGRAM
Внедрение ИИ в ваше приложение: используем Foundation модели Apple
Первое, что я сделал, посмотрев кейноут WWDC25 и State of the Union — поигрался с новым API Liquid Glass. Мне потребовалось несколько дней, чтобы запустить Ice Cubes, а версия 2.0 будет в полной мере использовать новейшую систему дизайна Liquid Glass в iOS, iPadOS и MacOS.
https://dimillian.medium.com/bringing-on-device-ai-to-your-app-using-apples-foundation-models-8a1df297eeaa
#ios
👉 @developer_mobila
Первое, что я сделал, посмотрев кейноут WWDC25 и State of the Union — поигрался с новым API Liquid Glass. Мне потребовалось несколько дней, чтобы запустить Ice Cubes, а версия 2.0 будет в полной мере использовать новейшую систему дизайна Liquid Glass в iOS, iPadOS и MacOS.
https://dimillian.medium.com/bringing-on-device-ai-to-your-app-using-apples-foundation-models-8a1df297eeaa
#ios
👉 @developer_mobila
👍1
Функциональное программирование в Android. Знакомство с парадигмой
Мир программирования быстро меняется. Возможно, скоро свою нишу в нём займёт и не особо популярная в кругах Android-разработчиков парадигма функционального программирования. Знания о ней помогут вам расширить кругозор, даже если вы не будете применять их на практике.
Эта статья открывает цикл материалов о функциональном программировании. В нём мы разберёмся, что из этой парадигмы можно применять в архитектуре Android-приложений, а на что стоит смотреть с осторожностью. Но прежде нужно глубже погрузиться в суть функционального программирования.
Сегодня поговорим о теории функционального программирования, её особенностях и о том, что оно может дать вашему приложению. Всё это — на примере моего собственного знакомства с функциональным программированием. Оно уже переросло в идею написать pet-проект на функциональной архитектуре, кстати, но обо всём по порядку.
https://habr.com/ru/companies/dododev/articles/917222/
#Android
👉 @developer_mobila
Мир программирования быстро меняется. Возможно, скоро свою нишу в нём займёт и не особо популярная в кругах Android-разработчиков парадигма функционального программирования. Знания о ней помогут вам расширить кругозор, даже если вы не будете применять их на практике.
Эта статья открывает цикл материалов о функциональном программировании. В нём мы разберёмся, что из этой парадигмы можно применять в архитектуре Android-приложений, а на что стоит смотреть с осторожностью. Но прежде нужно глубже погрузиться в суть функционального программирования.
Сегодня поговорим о теории функционального программирования, её особенностях и о том, что оно может дать вашему приложению. Всё это — на примере моего собственного знакомства с функциональным программированием. Оно уже переросло в идею написать pet-проект на функциональной архитектуре, кстати, но обо всём по порядку.
https://habr.com/ru/companies/dododev/articles/917222/
#Android
👉 @developer_mobila
👍2
📲Хотите научиться разрабатывать кросс-платформенные приложения с использованием Kotlin и Android?
23 июля в 20:00 МСК проведём открытый вебинар в преддверии курса «Android Developer», на котором соберем простое приложение для отображения списка контактов. Вы узнаете, как подключить сеть и локальную базу данных, и запустите приложение на Android, iOS и Desktop. Используя Kotlin и JetBrains Compose, мы покажем, как создавать кросс-платформенные приложения с минимальными усилиями.
Этот урок — идеальный старт для тех, кто хочет освоить кросс-платформенную разработку. Познакомьтесь с библиотеками для работы с сетью и базами данных, а также получите основы работы с JetBrains Compose — современным фреймворком для создания UI.
🔥Все участники получат скидку на большое обучение. Регистрация открыта: https://vk.cc/cNMTiv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
23 июля в 20:00 МСК проведём открытый вебинар в преддверии курса «Android Developer», на котором соберем простое приложение для отображения списка контактов. Вы узнаете, как подключить сеть и локальную базу данных, и запустите приложение на Android, iOS и Desktop. Используя Kotlin и JetBrains Compose, мы покажем, как создавать кросс-платформенные приложения с минимальными усилиями.
Этот урок — идеальный старт для тех, кто хочет освоить кросс-платформенную разработку. Познакомьтесь с библиотеками для работы с сетью и базами данных, а также получите основы работы с JetBrains Compose — современным фреймворком для создания UI.
🔥Все участники получат скидку на большое обучение. Регистрация открыта: https://vk.cc/cNMTiv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Я обогнал Google?
Навигация в Compose больше не проблема
Всем привет! Меня зовут Евгений, и я — Android-разработчик. Я не собираюсь соревноваться с Google, но, кажется, кое в чем я их все-таки обогнал.
Получив задачу написать новое приложение, я стал накидывать план: архитектуру, паттерны, фреймворки и библиотеки, которые мне понадобятся. Было решено писать полностью на Compose и для навигации использовать Jetpack Navigation. Тогда я еще не знал, какой ящик Пандоры открываю.
https://habr.com/ru/articles/918562/
#Android
👉 @developer_mobila
Навигация в Compose больше не проблема
Всем привет! Меня зовут Евгений, и я — Android-разработчик. Я не собираюсь соревноваться с Google, но, кажется, кое в чем я их все-таки обогнал.
Получив задачу написать новое приложение, я стал накидывать план: архитектуру, паттерны, фреймворки и библиотеки, которые мне понадобятся. Было решено писать полностью на Compose и для навигации использовать Jetpack Navigation. Тогда я еще не знал, какой ящик Пандоры открываю.
https://habr.com/ru/articles/918562/
#Android
👉 @developer_mobila
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Оборачиваем любой Composable красивой ленточкой
В этой небольшой статье мы узнаем, как создать модификатор ленты, который рисует контур, обтекающий любой элемент интерфейса Compose. Этот эффект можно использовать в качестве эффекта наведения курсора на нужную кнопку или для привлечения внимания к новому действию.
https://www.sinasamaki.com/wrapping-a-fancy-ribbon-around-any-jetpack-composable/
#Android
👉 @developer_mobila
В этой небольшой статье мы узнаем, как создать модификатор ленты, который рисует контур, обтекающий любой элемент интерфейса Compose. Этот эффект можно использовать в качестве эффекта наведения курсора на нужную кнопку или для привлечения внимания к новому действию.
https://www.sinasamaki.com/wrapping-a-fancy-ribbon-around-any-jetpack-composable/
#Android
👉 @developer_mobila
👍4
Работа с телевизионными каналами на Android TV: учимся использовать TIF в 2025. Стартовый гайд для разработчиков
Всем привет! Меня зовут Андрей Юрин, я android-разработчик в онлайн-кинотеатре KION. При создании приложения под Android TV у вас наверняка могут возникнуть вопросы: как получить доступ к списку телевизионных каналов и как организовать у себя трансляцию? В этом материале я отвечу на них и расскажу про взаимодействие с телевизором с помощью Android TV Input Framework (TIF), а также получение через него списка доступных каналов. По сути это первый шаг к созданию полноценного TV-приложения.
https://habr.com/ru/companies/ru_mts/articles/928726/
#Android
👉 @developer_mobila
Всем привет! Меня зовут Андрей Юрин, я android-разработчик в онлайн-кинотеатре KION. При создании приложения под Android TV у вас наверняка могут возникнуть вопросы: как получить доступ к списку телевизионных каналов и как организовать у себя трансляцию? В этом материале я отвечу на них и расскажу про взаимодействие с телевизором с помощью Android TV Input Framework (TIF), а также получение через него списка доступных каналов. По сути это первый шаг к созданию полноценного TV-приложения.
https://habr.com/ru/companies/ru_mts/articles/928726/
#Android
👉 @developer_mobila
👍2
PWA и WebView — как сделать ваше веб-приложение доступным в офлайн-режиме
Привет! Меня зовут Алексей Егоров. Сегодня поговорим про офлайн-режим в PWA и WebView, без лишней теории и с прицелом на мобильные приложения. В разработке я уже больше трёх лет, большую часть этого времени посвятил WebView и мобильным решениям. В этом материале мы разберём, как работают PWA и WebView в офлайн-режиме, посмотрим на инструменты, которые помогают реализовать такую функциональность, и в завершении я поделюсь примером: какую технологию мы выбрали для календаря и как внедрили офлайн-режим на практике.
https://habr.com/ru/companies/vk/articles/931048/
#Android
👉 @developer_mobila
Привет! Меня зовут Алексей Егоров. Сегодня поговорим про офлайн-режим в PWA и WebView, без лишней теории и с прицелом на мобильные приложения. В разработке я уже больше трёх лет, большую часть этого времени посвятил WebView и мобильным решениям. В этом материале мы разберём, как работают PWA и WebView в офлайн-режиме, посмотрим на инструменты, которые помогают реализовать такую функциональность, и в завершении я поделюсь примером: какую технологию мы выбрали для календаря и как внедрили офлайн-режим на практике.
https://habr.com/ru/companies/vk/articles/931048/
#Android
👉 @developer_mobila
👍2
🤖 Тест по Flutter проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.
➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cO7pt0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.
➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cO7pt0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎1
Media is too big
VIEW IN TELEGRAM
Как сделать эффект «жидкого стекла» от Apple в Figma
Пошаговое руководство по созданию эффекта «жидкого стекла» в Figma — с объяснением, почему мы меняем каждое свойство.
СОДЕРЖАНИЕ:
0:00 — Вступление
0:49 — Добавление текстурного эффекта
2:09 — Добавление размытия фона
4:09 — Встраивание в кнопку с авто-лейаутом
7:04 — Создание псевдорамы с помощью внутренних теней
9:16 — Заливка кнопки и улучшение видимости текста
10:03 — Итог и завершение
источник
#Android
👉 @developer_mobila
Пошаговое руководство по созданию эффекта «жидкого стекла» в Figma — с объяснением, почему мы меняем каждое свойство.
СОДЕРЖАНИЕ:
0:00 — Вступление
0:49 — Добавление текстурного эффекта
2:09 — Добавление размытия фона
4:09 — Встраивание в кнопку с авто-лейаутом
7:04 — Создание псевдорамы с помощью внутренних теней
9:16 — Заливка кнопки и улучшение видимости текста
10:03 — Итог и завершение
источник
#Android
👉 @developer_mobila
👍3
Media is too big
VIEW IN TELEGRAM
Молот и наковальня iOS-разработчика
Василий Усов, Кирилл Шумаков
Спикеры рассказали о macOS-приложении RaifMagic — внутреннем инструменте Райффайзен Банка, который их команда создала в рамках работы над мобильным приложением для клиентов.
RaifMagic — мощный инструмент для iOS-разработчиков, созданный для упрощения, ускорения и автоматизации ежедневных рабочих задач, а также для унификации и стандартизации окружения и контроля качества программного кода. С момента создания как обертки над командной строкой приложение прошло путь эволюции и превратилось в «центр управления полетами». Если Xcode — это молот, то мы создали наковальню.
Создание внутренних инструментов для разработчиков — привычная практика для любой крупной компании. Зачастую это заканчивается созданием папки scripts с кучей bash-скриптов и постоянным запуском терминала с вводом консольных команд. Мы пошли дальше и постарались сделать инструмент с удобным графическим интерфейсом для запуска генерации проекта. Но даже не предполагали, куда это нас приведет.
Сегодня приложение имеет интегрированный с Swift Concurrency механизм запуска консольных команд, самописную систему автообновления и контроля требуемой для генерации проекта версии, систему контроля и развертывания окружения, систему проверки качества кода, систему интеграции с GitLab для назначения ревьюеров на merge requests, специальный интерфейс для работы с фича-тогглами, позволяющий контролировать срок их жизни, и многие другие функции.
Обо всем этом — в докладе. Спикеры уверены, что история окажется полезной для других команд, размышляющих над созданием подобных инструментов. А некоторые решения мы выложим в open source.
источник
#ios
👉 @developer_mobila
Василий Усов, Кирилл Шумаков
Спикеры рассказали о macOS-приложении RaifMagic — внутреннем инструменте Райффайзен Банка, который их команда создала в рамках работы над мобильным приложением для клиентов.
RaifMagic — мощный инструмент для iOS-разработчиков, созданный для упрощения, ускорения и автоматизации ежедневных рабочих задач, а также для унификации и стандартизации окружения и контроля качества программного кода. С момента создания как обертки над командной строкой приложение прошло путь эволюции и превратилось в «центр управления полетами». Если Xcode — это молот, то мы создали наковальню.
Создание внутренних инструментов для разработчиков — привычная практика для любой крупной компании. Зачастую это заканчивается созданием папки scripts с кучей bash-скриптов и постоянным запуском терминала с вводом консольных команд. Мы пошли дальше и постарались сделать инструмент с удобным графическим интерфейсом для запуска генерации проекта. Но даже не предполагали, куда это нас приведет.
Сегодня приложение имеет интегрированный с Swift Concurrency механизм запуска консольных команд, самописную систему автообновления и контроля требуемой для генерации проекта версии, систему контроля и развертывания окружения, систему проверки качества кода, систему интеграции с GitLab для назначения ревьюеров на merge requests, специальный интерфейс для работы с фича-тогглами, позволяющий контролировать срок их жизни, и многие другие функции.
Обо всем этом — в докладе. Спикеры уверены, что история окажется полезной для других команд, размышляющих над созданием подобных инструментов. А некоторые решения мы выложим в open source.
источник
#ios
👉 @developer_mobila
Пошаговое руководство по написанию эксплойта ядра iOS
Эксплойты ядра iOS всегда вызывали у меня огромный интерес. За последние годы эксплуатация ядра стала значительно сложнее, и традиционные уязвимости (например, связанные с повреждением виртуальной памяти) стали встречаться реже.
Тем не менее, летом 2023 года felix-pb выпустил три эксплойта под названием kfd. Это были первые опубликованные эксплойты ядра, работавшие на iOS 15.6 и выше.
https://habr.com/ru/companies/bastion/articles/920922/
original https://alfiecg.uk/2024/09/24/Kernel-exploit.html
#ios
👉 @developer_mobila
Эксплойты ядра iOS всегда вызывали у меня огромный интерес. За последние годы эксплуатация ядра стала значительно сложнее, и традиционные уязвимости (например, связанные с повреждением виртуальной памяти) стали встречаться реже.
Тем не менее, летом 2023 года felix-pb выпустил три эксплойта под названием kfd. Это были первые опубликованные эксплойты ядра, работавшие на iOS 15.6 и выше.
https://habr.com/ru/companies/bastion/articles/920922/
original https://alfiecg.uk/2024/09/24/Kernel-exploit.html
#ios
👉 @developer_mobila
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Лаборатория в смартфоне: изучаем эффект Доплера на палочках в Android
В этой статье мы познакомимся с эффектом Доплера, но не так, как об этом рассказывается в школьном учебнике физики, а посредством своих любопытных глазок и ушек. Поможет нам в этом специально разработанное мной приложение для Андроид-смартфона.
https://habr.com/ru/articles/920738/
#Android
👉 @developer_mobila
В этой статье мы познакомимся с эффектом Доплера, но не так, как об этом рассказывается в школьном учебнике физики, а посредством своих любопытных глазок и ушек. Поможет нам в этом специально разработанное мной приложение для Андроид-смартфона.
https://habr.com/ru/articles/920738/
#Android
👉 @developer_mobila
👍2❤1
Использование
При отображении элементов в SwiftUI иногда нужно показать их позицию в последовательности — например, для списка инструкций или ранжированных результатов.
Обычный способ сделать это — вызвать
До недавнего времени
https://nilcoalescing.com/blog/UsingEnumeratedWithListAndForEach/
#ios
👉 @developer_mobila
enumerated()
с SwiftUI List
и ForEach
для отображения номеров элементовПри отображении элементов в SwiftUI иногда нужно показать их позицию в последовательности — например, для списка инструкций или ранжированных результатов.
Обычный способ сделать это — вызвать
enumerated()
для коллекции. Этот метод возвращает EnumeratedSequence
, который представляет собой последовательность пар (offset, element)
, где offset
— это счётчик, начинающийся с нуля, а element
— соответствующее значение из исходной коллекции.До недавнего времени
enumerated()
не был напрямую совместим с ForEach
или List
в SwiftUI, так как его результат не соответствовал протоколу RandomAccessCollection
. В качестве обходного решения приходилось оборачивать последовательность в массив.
RecipeStepsView: View {
let steps = [
"Chop lettuce, tomatoes, and cucumber.",
"Drizzle with olive oil and lemon juice.",
"Toss gently and serve."
]
var body: some View {
VStack(alignment: .leading) {
ForEach(
Array(steps.enumerated()), id: \.element
) { offset, step in
Text("\(offset + 1). \(step)")
}
}
}
}
https://nilcoalescing.com/blog/UsingEnumeratedWithListAndForEach/
#ios
👉 @developer_mobila
👍1