Обновить
54.65

iOS *

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

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

Учимся определять способность Core Data к легковесной миграции до загрузки контейнера

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

При создании приложения на основе фреймворка Core Data мы проектируем модель данных, в которую потом снова и снова вносим изменения. Неужели при этом каждый раз нужно удалять все данные и загружать их заново, а заодно перегружать сервер и батареи пользователей? Сначала кажется, что это единственный вариант решения, но я выяснил — всё можно сделать проще.

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

Читать далее

Реализация спойлеров в SwiftUI

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

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

Читать далее

Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS

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

Старший iOS-разработчик red_mad_robot Аня Кочешкова рассказывает, чем отличаются три менеджера зависимостей, в каких случаях и для каких задач подойдёт тот или иной. Материал будет полезен джун-специалистам, которые только начали погружаться в разработку: специально для них подробно объясняем, что такое семантическое версионирование, как устроены модули кода и в чём разница между динамическими и статическими библиотеками.

Читать далее

Отладка SwiftUI с пользовательским модификатором вью

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

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

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

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

Читать далее

Мобильная разработка за неделю #480 (13 — 19 марта)

Время на прочтение4 мин
Охват и читатели1.7K
В нашей новой подборке ошибки начинающих разработчиков и отсутствие работы у тех, кто работает, вкатывание в геймдев и выкатывание GPT-4, мобильные игры 2022 и многое другое.

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

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

Примеры анимаций, зависящих от прокрутки содержимого UIScrollView

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

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

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

Как компании подготовиться к модуляризации iOS приложений

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

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

Меня зовут Кирилл Смирнов. Я технический лидер iOS команды в СберЗдоровье. Последний год наша команда плотно занималась улучшением инструментов разработки, в том числе модуляризацией. В этом материале я поделюсь опытом и рекомендациями по подготовке бизнеса (заказчиков, исполнителей, смежников и др.) к модуляризации iOS приложений.

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

Разбираем ошибки начинающих iOS-разработчиков

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

Привет! Я Александра Башкирова, iOS-инженер в Clover и старший код-ревьюер на курсе «iOS-разработчик» в Яндекс Практикуме. На момент подготовки этой статьи мы уже проверили более тысячи работ студентов и успели заметить повторяющиеся ошибки.

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

Читать далее

Обновляю ссылку один месяц, или Лёгких задач не бывает

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

История о том, почему «обновить ссылку» — задача для техлида: тут и про тесты, и про вёрстку, и про архитектуры процессоров.

Бульварное чтиво из 15+1 мемов

Переходим на Flutter: за и против

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

Привет, Хабр!

Меня зовут Данил Абдрафиков и уже более пяти лет я занимаюсь мобильной разработкой, три из которых — на Flutter. Последние несколько лет я разрабатываю продукты для энтерпрайза в TAGES, и за это время у меня успел накопиться определенный опыт, которым я бы хотел поделиться с вами в сегодняшней статье. Я расскажу, что нужно знать опытному мобильному разработчику для перехода на Flutter, с какими особенностями можно столкнуться и стоит ли вообще переходить на него.

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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


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




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


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


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


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

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


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