Все потоки
Поиск
Написать публикацию
Обновить
60.36

iOS *

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

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

Как локализовать все ваши iOS приложения на 20 языков за 5 минут

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

Я создал консольный инструмент, который автоматически находит все файлы .strings в проекте xcode и переводит их на все языки.

Читать далее

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

Время на прочтение4 мин
Количество просмотров2K
В нашем новом еженедельном выпуске переводы на арабский и решения судоку на Compose, быстрое создание бизнес приложений и быстрый завоз темных тем, ускорение ТТМ, ИИ-сервисы, ARCore, красивые цвета и многое другое!

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

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

Анимация UIView, зависящая от прокрутки содержимого UIScrollView

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

Узнайте, как сделать ваше iOS-приложение более динамичным с помощью анимации UIView, связанной с прокруткой UIScrollView

Читать полностью

→ Как быстро завезти тёмную тему

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

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

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

При этом в «дано» у нас было: 
— библиотека цветов в Фигме;
— библиотека цветов на платформах (с кучей цветов наследия);
— только базовые компоненты в Фигме и ещё меньше — в коде;
— иконочный сет и сет иллюстраций. 

В статье я по шагам опишу наш путь.

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

Произвольные красивые цвета: RGB, HSL, LCH и вот это вот всё

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

RGB какой-то отстой.

Модель RGB, мало чем отличающаяся от ASCII, адресов памяти и наличия 86 400 секунд в сутках, является одной из тех инструментов, которые немного упрощают программирование, до поры до времени.

Читать далее

Как мы приложение Додо Пиццы на арабский переводили

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

Что вы знаете о том, как добавить поддержку языков, которые пишутся справа налево (Right to Left, RTL), в iOS‑приложение? Нужно использовать leading и trailing вместо left и right, а ещё… Вот и мы больше ничего не знали, но пришлось разобраться.

Мы готовим приложение Додо Пиццы к локализации на арабский язык. В статье хотим поделиться находками и рассказать, зачем нам поддержка RTL в приложении, почему не достаточно просто адаптировать вёрстку в коде для поддержки RTL, зачем мы перерисовывали иллюстрации и чем отличается арабский знак процента от европейского. Ещё покажем много скриншотов и поделимся шпаргалками по поддержке RTL в коде.

Читать далее

The Composable Architecture — лучшие практики

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

Команда The Browser Company активно использует фреймворк The Composable Architecture (TCA). Основываясь на опыте нашей команды и мнениях более широкого сообщества, я разработал новый набор best practices (лучших практик), которые могут принести пользу вашим проектам TCA.

Вот некоторые из ключевых практик, которые можно использовать в своих проектах.

Читать далее

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

Время на прочтение4 мин
Количество просмотров2K
В нашем новом дайджесте SnapKit и Android Studio, App Quality Insights и асинхронности, доход от покупок социальных сетей, API для ChatGPT и многое другое.

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

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

C/C++ из Python (Kivy, ctypes) на iOS

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

Ранее я писал статьи C/C++ из Python (ctypes), C/C++ из Python (Kivy, ctypes) на Android. В них описывается процесс запуска на Linux и Android. Теперь поговорим как тоже самое сделать на iOS. В этой статье речь пойдет о сборке, необходимых инструментах, механизмах отладки и установки.

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

Введение в архитектурный шаблон «Мрак в Моделях»

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

В данной статье рассмотрим один из способов работы со сложностью, возникающей в ходе разработки ПО. Рассмотрим принципы SSOT, FRP (Combine), SRP и дойдём до архитектурного шаблона «Мрак в Моделях» (далее MM), являющегося комбинацией этих принципов. Примеры будут для iOS на Swift, но всё описанное, конечно, применимо не только на платформах Apple.


Часть 1. Как я пришёл к описываемому архитектурному шаблону




1.1. Разработка без комплексов, или архитектурный антишаблон «Massive View Controller»


Многие в iOS начинали свой путь с размещения практически всего кода в UIViewController'ах, т.к. любой экран в iOS есть ни что иное, как экземпляр UIViewController. Так куда класть код, если не в этот самый видимый экран? Кнопки-то ведь на экране? Следовательно, и реакции на кнопки должны быть там же. С этого и начнём.


Создадим крошечное приложение, позволяющее начинать звонок двумя способами:


  • ввести номер в поле ввода и нажать на кнопку «Начать звонок»
  • принять входящий звонок как аудио через интерфейс CallKit

Выглядеть оно будет минималистично:


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

Произвольное вращение линейного градиента SwiftUI

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

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

Однако всякий раз, когда я использовал их раньше, я использовал только встроенные значения direction (направления):.top,.topTrailing,.leading и т. д. И, если быть честным, это были единственные варианты, которыми я располагаю.

Читать далее

iOS-разработка со SnapKit: спасаем консоль от простыни ошибок и ускоряем отрисовку UI

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

Привет, я Даша, занимаюсь iOS‑разработкой в Сравни. Мы в мобильной команде пользуемся SnapKit — помогает нам ревьюить изменения в общих компонентах быстрее и проще. Инструмент прекрасный, но я заметила тенденцию: стоит в работе появиться сложным вариантам вёрстки, как сразу в разы растёт вероятность, что UI может выглядеть ок, а в консоли будет отображаться множество ошибок LayoutConstraints, логи засоряются, найти действительно полезную информацию становится сложнее.

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

Читать далее

Тестирование конвейера релизов с помощью Fastlane

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

Пару недель назад я выступил с докладом о том, как обрести уверенность в процессе релиза, на Mobile Devops Summit, дистанционном мероприятии, организованном Bitrise. В конце концов, я подумал, что было бы неплохо написать статью с описанием специфики выступления и мотивов, стоящих за ним.

Читать далее

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

Стилизация компонентов в SwiftUI

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

SwiftUI имеет отличный API для стилизации view независимо от их реализации. В этом посте мы рассмотрим, как мы можем стилизовать пользовательские view таким же образом.

В прошлом году в ходе нескольких эпизодов на Swift Talk мы продемонстрировали, как создать собственный степпер для увеличения и уменьшения значения. Он был похож на Stepper в SwiftUI, но с API, который делает его стильным.

Этот пост является кратким изложением того, что мы рассмотрели тогда, а также несколькими приёмами, которым мы научились с тех пор, чтобы наши пользовательские стили view (представление, вью, вьюшка) работали ещё лучше, как built‑in (встроенные) в SwiftUI. В последующем посте мы рассмотрим несколько более продвинутых вариантов использования.

Читать далее

Мобильная разработка за неделю #477 (20 — 26 февраля)

Время на прочтение3 мин
Количество просмотров1.9K
В нашем новом дайджесте Live Text API в iOS 16 и игры в тесты, будущее Flutter и формулы для оптических настроек, свой Firebase за 7$, пародии на синие галочки и многое другое!

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

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

Перенос URLSessionTask в background URLSession при уходе приложения в фон

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

Всем привет. Всем привет. Меня зовут Максим Батраков и я iOS-разработчик в 65apps. В этой статье я хочу рассказать о некоторых особенностях работы с URLSession, разобрать загрузку файлов в background URLSession и показать процесс переноса выполнения активных запросов в background URLSession после того, как приложение ушло в фон.

Читать далее

Аналитика мобильных приложений — простыми словами для бизнеса

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

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

Читать далее

Отслеживание местоположения при наведении в SwiftUI

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

Какое-то время у нас был только модификатор onHover(perform:) в SwiftUI, который вызывается, когда пользователь перемещает указатель над рамкой view (представление, вью, вьюшка) или от неё. Раньше не было официального способа непрерывного отслеживания местоположения указателя. Это изменилось с введением onContinuousHover(coordinateSpace:perform:) в macOS 13 и iPadOS 16.

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

Читать далее

Свой Firebase за 7$ или практический опыт внедрения Appwrite как сервера для мобильного приложения

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

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

Читать далее

Live Text API в iOS 16 — сканирование данных с помощью камеры в SwiftUI

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

На WWDC22 Apple представила iOS и iPadOS разработчикам замечательные инструменты сканирования данных на основе Live Text, которые позволяют пользователям сканировать текст и QR-коды с помощью камеры, аналогично интерфейсу Live Text в приложении Camera.

В этой статье я сосредоточусь на новом API под названием DataScannerViewController и поделюсь своим опытом встраивания этого API в существующий код SwiftUI.

Читать далее