Обновить
60.87

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Наблюдение за смещением содержимого SwiftUI ScrollView

Время на прочтение6 мин
Охват и читатели4.8K

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

Однако, когда дело доходит до ScrollView SwiftUI, в настоящее время (на момент написания) не существует встроенного способа выполнения таких наблюдений за прокруткой. Хотя встраивание ScrollViewReader во view (представление, вью, вьюшка) прокрутки позволяет нам изменять положение прокрутки в коде, оно, как ни странно (особенно учитывая его имя), не позволяет нам каким‑либо образом считывать текущее смещение содержимого.

Один из способов решить эту проблему — использовать богатые возможности UIKit UIScrollView, который благодаря протоколу делегата и методу scrollViewDidScroll обеспечивает простой способ получать уведомления всякий раз, когда происходит прокрутка. Однако, несмотря на то, что я обычно большой поклонник использования UIViewRepresentable и других механизмов взаимодействия SwiftUI/UIKit, в этом случае нам пришлось бы написать довольно много дополнительного кода, чтобы преодолеть разрыв между двумя фреймворками.

Читать далее

DND 18: Создание пользовательских SF Symbols

Время на прочтение2 мин
Охват и читатели1.6K

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

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

Читать далее

Этапы сборки SwiftLint с входными и выходными файлами Xcode

Время на прочтение4 мин
Охват и читатели2.6K

Этот репозиторий содержит пример проекта, демонстрирующий, как настроить этапы сборки SwiftLint с помощью функции файлов ввода-вывода Xcode путем определения действия перед сборкой для создания списка входных файлов для SwiftLint. Эта настройка решает новое предупреждение, появившееся в Xcode 14:

Читать далее

Парсинг ответов на BLE-команды на языке Swift на примере GoPro

Время на прочтение11 мин
Охват и читатели3K

Привет, Хабр! Меня зовут Полина, работаю в Doubletapp iOS‑разработчиком и сегодня хочу рассказать о нашем опыте работы с API GoPro, а конкретно с парсингом ответов на команды BLE, которые описаны в этом API.

Содержание:

Принцип работы с BLE-устройствами
Сервисы и характеристики BLE-устройств
Процесс отправки команд и получения ответов через BLE
Простые ответы
Комплексные ответы
Формирование пакетов
Парсинг комплексных ответов
Общий алгоритм работы с BLE-ответом 

Читать далее

Самостоятельный хостинг macOS CI на Apple Silicon с приложением Cilicon

Время на прочтение6 мин
Охват и читатели1.8K

Коротко: мы выпустили новое приложение для macOS под названием Cilicon, которое предоставляет и запускает эфемерные виртуальные машины для CI (Cilicon Installer – автономное приложение). Используя его, мы смогли переключиться на собственные Actions Runners и ускорить нашу CI в 3 раза, а также дать вторую жизнь некоторым из наших поврежденных устройств M1 MacBook Pro.

Читать далее

KMP глазами iOS-разработчика

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели17K

Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

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

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

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

Читать далее

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

Время на прочтение13 мин
Охват и читатели9.8K

Сергей Журавель | 22 ноября 2022 г.

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

Читать далее

Превратности диспетчеризации в Swift

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.7K

Всем привет, меня зовут Сергей, я работаю в компании Joy Dev в должности iOS TeamLead. Эта статья - моя “проба пера” на Хабре. В ней, вместе с обзором видов диспетчеризации в Swift, мы рассмотрим несколько примеров, когда реализация методов в extension может вести себя неожиданным образом. Итак.

Читать далее

Мобильная разработка за неделю #475 (6 — 12 февраля)

Время на прочтение3 мин
Охват и читатели3.3K
В этом выпуске ускорение Swift и первый релиз Android 14, собеседование и тестирование, спрос на мобильных разработчиков, приложения для здоровья и фитнеса, прелести legacy-кода и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →

Элемент выбора эмодзи (aka EmojiPicker) для iOS как в MacOS

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.8K

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

Читать далее

Экономьте деньги при использовании GitHub Actions для iOS CI/CD

Время на прочтение5 мин
Охват и читатели2.6K

В этом сообщении блога я делюсь советами о том, как наиболее эффективно использовать GitHub Actions и избежать лишнего времени выполнения и денежных затрат.

Я предполагаю, что вы знакомы с GitHub Actions и уже использовали их, но вот краткий обзор:

Читать далее

Участвует ли Apple в современной ИИ-революции?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.9K

Недавно прочитал статью "Apple, а что случилось? Нейросети уже меняют мир, а в Купертино молчат" - где обсуждаются некоторые следствия ИИ-революции, которую произвёл в последние пару месяцев чат-бот ChatGPT. Что Google в панике ввела «красный код» и пытается показать результаты своих многолетних ИИ-разработок. Что Microsoft моментально вложила миллиарды долларов в проект OpenAI и уже представила новую версию поисковой системы Bing с ИИ на базе чат-бота ChatGPT.

Также широко известно, что кроме Google и Microsoft, такие крупные корпорации как Meta Platforms, Amazon, IBM, Intel, Nvidia вкладывают большие деньги в развитие ИИ-технологий и время от времени не стесняются об этом рассказывать. А вот компания Apple вроде бы как со стороны наблюдает за всей этой вакханалией и пока не лезет в эту драку.

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

Читать далее

Ближайшие события

Современный SwiftUI: общение родителей и детей

Время на прочтение9 мин
Охват и читатели1.4K

Преамбула

Этот пост в блоге является одним из серии. Обязательно прочитайте все части!

Modern SwiftUI: Parent-child communication

Modern SwiftUI: Identified arrays

Modern SwiftUI: State-driven navigation

Modern SwiftUI: Dependencies

Modern SwiftUI: Testing

На прошлой неделе мы завершили нашу амбициозную серию из 7 статей, посвященных современным передовым методам разработки SwiftUI. В этих эпизодах мы перестроили приложение компании Apple “Scrumdinger” с нуля (исходный код здесь), которое является отличной демонстрацией многих проблем, с которыми можно столкнуться в реальном приложении. На каждом этапе пути мы ставили перед собой задачу написать код максимально масштабируемым и ориентированным на будущее, в том числе:

Читать далее

Как ускорить Swift с помощью Conformances

Время на прочтение6 мин
Охват и читатели1.2K

В рантайме Swift выполняет проверку соответствия протоколу, когда вы приводите тип к протоколу, например, с as? или as!. Эта операция на удивление медленная, как подробно описано в моем предыдущем посте. В этой статье мы рассмотрим простой способ ускорить этот процесс примерно на 20%, не внося никаких изменений в ваш исходный код. А начнём с краткого обзора проверок соответствия протокола.

Читать далее

Создание пользовательских слоев в SwiftUI. LayoutValueKey

Время на прочтение3 мин
Охват и читатели911

В последние несколько недель мы рассмотрели многие аспекты создания пользовательских слоев с использованием нового Layout протокола в Swift UI, однако нам еще многое предстоит обсудить. На этой неделе мы узнаем, как использовать протокол Layout Value Key для передачи параметров пользовательских слоев при создании представлений в пользовательском слое.

Читать далее

Swift-код в качестве пользовательских команд LLDB

Время на прочтение6 мин
Охват и читатели1.8K

Если я спрошу, какую команду LLDB вы используете чаще всего, то я почти уверен, что вы, как и большинство iOS-разработчиков, ответите po. Но знали ли вы, что вы можете определить свою собственную команду LLDB, используя только Swift-код?

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

Читать далее

Получение доступа к командной строке из XCTest

Время на прочтение4 мин
Охват и читатели962

Командная строка — довольно мощный инструмент. Его можно использовать для автоматизации множества вещей здесь и там. Очевидно, речь идёт не только о сценариях Shell, из него можно запустить и любой другой инструмент. Но использовать его напрямую не всегда возможно.

XCTest, например, работает внутри песочницы, это означает, что вы буквально не можете даже высунуть нос из коробки. Ну, почти. Давайте обойдём это ограничение и узнаем, как получить доступ к командной строке из тестов.

Читать далее

Как установить 2GIS на iPhone в 2023 без танцев с бубном (почти)?

Время на прочтение1 мин
Охват и читатели26K

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

Ну и как?

Мобильная разработка за неделю #474 (30 января — 5 февраля)

Время на прочтение4 мин
Охват и читатели2.5K
В новом дайджесте много интересного — масштабирование изображений, сокращение времени запуска, проблемы в виджетах и их решения, проблемы бережливых стартапов и многое другое!

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →