Как стать автором
Поиск
Написать публикацию
Обновить
9.62

Swift *

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

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

SwiftUI AlignmentGuide

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

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

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

Читать далее

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

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

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

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

Быстрее показывай, что там дальше!

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

Performance Testing для iOS

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

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

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

Читать далее

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

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

Всем привет!

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

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

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

Читать далее

Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime

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

Всем привет! Меня зовут Фарид, я занимаюсь iOS-разработкой в компании Банки.ру.

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

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

В этой статье мы: 

1) пройдёмся по основным подходам к поиску утечек; 
2) попробуем найти способ сделать его обнаружение утечек менее болезненным;
3) выясним, можно ли каким-то образом застраховаться от утечек в будущем развитии проекта.

Читать далее

Создание XCFramework из SPM пакета

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

Привет, Хабр! Я Николай Чурянин, начальник отдела разработки приложений для юридических лиц.

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

Читать далее

Принципы SOLID. Dart/Flutter

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

Принципы SOLID простым языком для начинающих разработчиков.

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

Читать далее

Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData

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

На примере создания приложения pазберем архитектуру Redux, учтем возможное разделение приложения на модули. Будем постепенно наращивать уровень сложности (ориентир сложности: 🧠) В конце добавим работу со SwiftData, что закрепит понимание передачи данных не только в хранилище, но и по структурам Redux

Читать далее

Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI

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

Сочетать учёбу и работу в IT – задача, мягко говоря, непростая. Даже если вы только ходите на занятия и делаете «домашку». А уж если вы захотите сами организовать обучение – сложности будут расти в геометрической прогрессии.

Недавно наша команда iOS-документов в МойОфис решила перейти на SwiftUI – декларативный UI-фреймворк от Apple. После достаточно безболезненного рефакторинга модуля с UIKit на SwiftUI оставалось всего ничего – обучить коллег новому фреймворку.

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

Читать далее

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

Режимы наложения/смешивания в SwiftUI

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

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

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

Читать далее

Мотор «от Xiaomi»

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

Мини-обзор распаковка чуда китайской инженерии «Xiaomi Cyber Gear», и мимо трёх этих слов нельзя пройти спокойно, если проживаешь в 2024-м году.

Не проходите мимо

iOS 18 PHAsset URL из requestAVAsset

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

Всем привет! Сегодня я с большой радостью буду обсуждать iOS 18. Наконец-то, уважаемые коллеги, пришло время и мне приобщиться к этой замечательной операционной системе — iOS 18 beta 4. Главной причиной моего участия стали наши продвинутые пользователи, которые уже активно тестируют iOS 18. Спасибо вам за это!

Сразу скажу, что я истинный любитель Apple и все, что с ней связано, вызывает у меня огромный интерес.

Стоит отметить, что iOS 18 beta 4 я буду сокращенно называть iOS 18. Также важно понимать, что методы и способы работы с ними могут измениться в релизной версии iOS 18.

В статье я поделюсь своим недавним опытом работы со следующими методами под iOS 18 beta 4, которые удивительным образом отличаются от предыдущих версий iOS.

Читать далее

Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+

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

Всем привет! Меня зовут Саша, я iOS-разработчик компании Ozon. Я занимаюсь разработкой и развитием мобильного приложения продавца. Сегодня хотел бы поделиться опытом нашей команды по кастомизации онбординга для вашего мобильного приложения.

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

- Как представить новую фичу пользователю?

- Как сделать так, чтобы пользователь не пропустил добавленный функционал?

- Как повысить количество взаимодействий с новым функционалом?

Также возникает вопрос упущенного этапа продажи новой фичи — подача обновления пользователю.

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

Читать далее

Удобная навигация в SwiftUI для iOS 16 и выше

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

Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16 🥳

В данной статье хочу представить на `мой взгляд` наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините 😜

Читать далее

Скрытая (на виду) сила KeyPath'ов

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

Привет! Меня зовут Максим Черноусов, и я занимаюсь iOS-разработкой в Райфе. Я обожаю использовать и дизайнить классные API. А один из самых часто используемых строительных блоков для хороших API в Swift — это KeyPath'ы. Сегодня о них и поговорим.

Читать далее

Пишем свой Swift макрос без лида, ИТ-курсов и кредитов

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

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

Сегодня я хотел бы рассказать вам о макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется. Так как я работаю в команде дизайн-системы, мы рассмотрим макросы на примере добавления метода copy для всех моделей UI-компонентов.

Читать далее