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

iOS *

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Команда 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 мин
Количество просмотров685

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее