Как стать автором
Обновить
22.62

Swift *

Открытый объектно-ориентированный язык

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

Как реализовать спойлер-эффект как в Telegram на Swift?

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров847

Спойлеры стали неотъемлемой частью общения в мессенджерах и социальных сетях. Они позволяют скрывать часть информации до тех пор, пока пользователь не захочет ее увидеть. В Telegram спойлер-эффект сопровождается красивой анимацией рассыпающихся точек. В этой статье мы рассмотрим, как реализовать подобный спойлер-эффект в iOS-приложении на Swift, используя CAEmitterLayer и UITextVie.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Новости

Быстрый доступ к VPN в iOS с помощью App Intents

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.3K

Привет! Меня зовут Антон Долганов, я iOS-разработчик в компании Контур. Я работаю над инфраструктурными модулями и параллельно поддерживаю наше приложение Контур.Коннект, которое используется для подключения к внутреннему VPN и даёт доступ к корпоративным сервисам.

Недавно мы выпустили обновление Коннекта, добавив поддержку Быстрых команд (Shortcuts). Теперь можно включать и отключать VPN, даже не заходя в приложение. В этой статье я расскажу, как я это реализовал и почему это полезно.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1.6K

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

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

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

Читать далее
Всего голосов 13: ↑13 и ↓0+17
Комментарии2

Графы в Swift: Поиск в Глубину и Поиск в Ширину

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.6K

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

Читать далее
Всего голосов 5: ↑4 и ↓1+7
Комментарии4

Истории

Готовый компонент UI свайп-панели c добавлением scrollView, и других элементов ui. (iOS Swift)

Время на прочтение8 мин
Количество просмотров996

ContainerController компонент пользовательского интерфейса. Это копия свайп-панели из приложения: AppleMaps.

Читать далее
Всего голосов 6: ↑6 и ↓0+10
Комментарии0

Прокачайте свой Swift с @dynamicMemberLookup

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров906

Swift — это мощный язык программирования, который сочетает в себе безопасность типов и выразительность. Однако, несмотря на свою строгую типизацию, язык предоставляет разработчикам возможность использовать динамический доступ к свойствам объекта с помощью атрибута dynamicMemberLookup. Это может быть полезно, например, для работы с динамическими данными или при создании DSL (Domain-Specific Language). С помощью этого атрибута мы можем обращаться к свойствам экземпляра типа, даже если эти свойства явно в нем не определены.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии1

Булевы операции двумерных тел

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров8.7K

В детстве меня всегда завараживали игры с динамическим ландшафтом: The Castle и Worms Armageddon. В то время я не понимал, как реализована эта удивительная механика разрушения и изменения мира. Позже я узнал, что секрет заключался в использовании растровой графики, но интерес к теме не исчез. В этой статье я хочу рассказать о векторном решении аналогичной задачи.

Читать далее
Всего голосов 25: ↑25 и ↓0+33
Комментарии15

Дружим iPhone и ESP32. Часть 1. ESP Arduino Core

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.1K

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

Читать далее
Всего голосов 8: ↑8 и ↓0+12
Комментарии0

Как я решал задачу получения доступа к данным банковских приложений на iOS

Время на прочтение5 мин
Количество просмотров4.3K

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

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

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

Читать далее
Всего голосов 15: ↑14 и ↓1+14
Комментарии4

Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров483

В мире, где ваш телефон умеет угадывать настроение по плейлисту, почему бы не научить его распознавать звуки вокруг? С помощью фреймворка SoundAnalysis это проще, чем кажется. Мы расскажем, как легко и с минимальными потерями для душевного здоровья интегрировать распознавание звуков в ваше iOS-приложение.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Автоматизация работы с JSON в Swift с помощью Codable

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров546

Автоматизация работы с JSON в Swift с помощью Codable

Когда вы работаете с данными в Swift, особенно при взаимодействии с API, вам часто приходится разбирать JSON-ответы и преобразовывать их в структуры данных. Это может быть утомительной и повторяющейся задачей, особенно если у вас есть сложные или вложенные JSON-структуры. Для решения этой проблемы в Swift существует мощная и удобная библиотекаCodable.

Читать далее
Всего голосов 5: ↑2 и ↓3+3
Комментарии1

Реализуем машинное обучение на сервере с помощью Swift

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.1K

В этом руководстве я покажу вам, как работать с моделью машинного обучения на сервере Vapor с помощью Swift.

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0+12
Комментарии0

SwiftUI AlignmentGuide

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

Всем привет, сегодня я расскажу про верстку в SwiftUI с помощью AlignmentGuide.

AlignmentGuide позволяет сделать специальное выравнивание внутри View. А точнее сказать, инструмент позволяет строить направляющие для выравнивания в контейнерных типах View (HStack, VStack, ZStack) между родителем и его потомками.

Читать далее
Всего голосов 3: ↑3 и ↓0+7
Комментарии0

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн

Шина данных и Swift: применение в слабосвязанных архитектурах

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров980

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

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

Быстрее показывай, что там дальше!
Всего голосов 3: ↑3 и ↓0+5
Комментарии2

Работа с кодом на C++ в Swift

Время на прочтение9 мин
Количество просмотров2K

Привет, Хабр! Меня зовут Иван Мясников, я CTO проекта «Виртуальный ассистент» в МТС Диджитал. Встраивание кода С++ в приложения для iOS — достаточно трудная задача. Еще сложнее собрать SDK для дальнейшей поставки в сторонние приложения, используя логику на С++ совместно со Swift. В этой статье я расскажу, как мы создавали такой SDK так, чтобы он встраивался в любое приложение без танцев с целевой архитектурой процессора.

Встраивание C++ в Swift позволяет использовать один код на разных платформах и ускорить некоторые задачи, где Swift не хватает быстродействия. У нас есть библиотека на C++ для работы с ML на Tensorflow Lite. И эту библиотеку мы хотели встроить на Android, iOS, Linux под различные платформы и архитектуры процессора без переписывания логики оттуда на Kotlin, Swift или что-нибудь еще. В этой статье я расскажу, как мы заставили код на C++ работать в iOS и какие тут есть тонкости и ограничения. Я ориентировался на читателей, у которых может не быть экспертизы в iOS или в C++, и старался не погружаться в глубокие дебри. Этот материал познакомит с решениями, к которым мы пришли экспериментально, подбирая подходящие варианты под нашу задачу.

Читать далее
Всего голосов 11: ↑10 и ↓1+14
Комментарии12

Антимат в чате на iOS: как я мешаю пользователям сквернословить

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.4K

Привет, Хабр! На связи снова Александр Пиманов (по-прежнему iOS-разработчик МТС Диджитал). Сегодня поделюсь своим опытом в одной интересной нишевой теме: фильтрации нецензурной лексики в приложении для iOS.

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

Читать далее
Всего голосов 8: ↑6 и ↓2+9
Комментарии22

Adwaita-swift: теперь можно писать приложения для GNOME на языке Swift

Время на прочтение9 мин
Количество просмотров1.1K

Язык программирования Swift наиболее широко применяется в разработке программного обеспечения для операционных систем от компании Apple. Но не так давно появилась заметка, в которой говорится, что теперь на этом языке можно писать программы, основанные на GTK4+Libadwaita.

В статье рассмотрим несколько небольших примеров, иллюстрирующих применение Swift в разработке приложений для GNOME, а в конце создадим простенький генератор паролей.

Читать далее
Всего голосов 10: ↑10 и ↓0+15
Комментарии0

От Cocoapods к Tuist+SPM быстрыми шагами

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров1.7K

Не так давно прогремела новость, что Cocoapods переходит в режим поддержки, больше не будет развития, а только поддержка. В связи с этим встал вопрос, что дальше. В начале мы склонялись к чисто Swift Package Manager, но потом пришло понимание, что неплохо было бы уйти от конфликтов в project файле и сделать задел на модульность. В этой статье постараюсь описать полный путь от Cocoapods к Tuist+SPM, затрону то, что было мне было не понятно в других статьях и передать опыт, чтобы облегчить другим переход.

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии4

Performance Testing для iOS

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

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

Но как мы можем отслеживать и мерить метрики скорости нашего приложения? Этим вопросом задаются многие разработчики и компании, которые получили негативную реакцию или думают наперед, когда кодовая база и сложность приложения будет расти. Существует два пути: либо мы изучаем на реальных пользователях нашего приложения, либо мы ищем какой-то другой способ, который позволяет нам статистически проверить гипотезу.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

5 рандомных вопросов на собеседовании iOS разработчика

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.8K

Всем привет!

Рассмотрим 5 вопросов, которые вам могут задать на собеседовании на позицию iOS разработчика. Скорее всего, это вопросы уровня Junior, но т.к. сейчас непонятно кто, что и у кого спрашивает, поэтому не будем разводить холивар :)

Вопрос №1: Можно ли создать необязательные методы в протоколах?

Ответ: Существует два способа создания необязательных методов для протоколов.

Читать далее
Всего голосов 5: ↑4 и ↓1+7
Комментарии10
1
23 ...