Telegram Web Link
iOSRef – подборка шпаргалок по iOS разработке

📱Особенности каждого девайса: разрешение, тип экрана, железо, доступные версии ОС
🛠Инструменты: HEX to UIColor, NSDateFormatter, Auto Layout helper
🔗Ссылки на различные гайдлайны
👍30🔥6👎21
Compile-time проверка URL

Если вам не нравится постоянно использовать guard let для проверки валидности URL, попробуйте этот Swift Package. Он проверяет валидность URL прямо во время компиляции.
👎45👍6🤔2🤡2
Малоизвестные возможности цветовой палитры в Xcode

- Палитру можно вызывать не только через меню инструментов, но и через цветовые литералы прямо из кода
- Можно создавать свои палитры цветов и переиспользовать их между проектами
- Цветам в палитре можно задавать названия и использовать их как литералы
- Можно прямо в Xcode сгенерировать свою цветовую палитру на основе любого изображения
👍24🔥4❤‍🔥1
Как работать с типом Measurement в Swift Charts

Foundation предоставляет удобный тип для работы с любым типом измерений – Measurement. Но по умолчанию он пока что не работает со Swift Charts. В статье рассматривается несколько вариантов, как решить эту проблему.
👍1
TableView: reload vs reconfigure

Начиная с iOS 15 в UITableView и UICollectionView появился метод reconfigure. В отличие от reload он не пересоздает ячейку с нуля, а обновляет существующую. По ссылке можно прочитать детали про алгоритм его работы.
👍51🌭6🔥5🤡4🤔3🤬1
Советы по тестированию кастомных Codable инициализаторов

- Кастомную сериализацию нужно тестировать так же, как и другую бизнес-логику
- Кастомный codable init лучше объявлять в экстеншне, чтобы не потерять memberwise init, генерируемый компилятором
- Проверочный объект создаете вручную через memberwise init, а проверяемый – на основе JSON
- Чтобы получить полезный аутпут теста о том, что конкретно отличается в объектах, попробуйте библиотеку Difference
👍19🔥2👎1
Как включить Stage Manager в iPad симуляторе

Стандартный ответ на вопрос – внести правки в .GlobalPreferences.plist на симуляторе, что не очень удобно. Но есть вариант попроще: xcrun simctl spawn booted defaults write -g SBChamoisWindowingEnabled -bool true.
👍3🕊21
Loco – линтер для Localization.strings

Линтер умеет делать следующие проверки:
- Непереведенные строки в Swift коде
- Пропущенные ключи в каких-то из локализаций
- Ключи-дубликаты
- Неиспользуемые ключи
🔥98👍12👎2
Подробный пост про Grids в SwiftUI

👀Сравнение разных типов контейнеров
☎️Разбор настройки Spacing, Alignment, Width/Height
✡️Реализация шестиугольных ячеек
💻Семпловый проект Grid Trainer, в котором можно поиграться самостоятельно со всеми настройками
🔥30
Когда вы интегрируете рекламные SDK в приложение, готовьтесь: будет много проблем. Не всегда очевидных. Но всегда сильно раздражающих.

Ребята из FUNCORP подготовили список таких «граблей» — а заодно объяснили, как работает реклама в приложениях под капотом. Бонус: в статье есть код, который решает самые бесячие проблемы.
Читать здесь.
👍18👎1
Лайфхак для тестирования готовности приложения к интернационализации строк

Если вы укажете NSDoubleLocalizedStrings в качестве Launch Argument, все строки в приложении автоматически продублируются. Благодаря этому можно посмотреть, как приложение справляется с более длинными строками.

Есть еще несколько способов включить этот режим:
- Scheme Editor -> Application Language -> Double Length Pseudolanguage
- Interface Builder -> Preview Assistant Editor -> Double Length
🔥69👍13🤡7🤯3
This media is not supported in your browser
VIEW IN TELEGRAM
Туториал по реализации клона Apple Calculator на SwiftUI

- Разбор того, как правильно декомпозировать калькулятор на View слое
- Поэтапная реализация всех компонентов калькулятора
- Исходники на GitHub
👍21😁4🤡4🔥1
Пошаговая реализация анимации с melting эффектом

Разбор сложных анимаций – это всегда интересно. В этой статье рассказывается, как сделать анимацию перехода между экранами с «плавящим» эффектом.
🔥21🤔6🤡3👍1👎1
SwiftUI не нужен MVVM

Автор сравнивает возможности SwiftUI с майрософтовским WPF, из чего делает вывод, что в SwiftUI ViewModel в большинстве случаев лишняя сущность.
👎43👍17🤡10😁3🤬2🔥1
Неочевидные особенности разработки Live Activity

- Для запуска Live Activity из приложения не требуется явное подтверждение пользователя
- Приложение должно находиться в foreground для старта Activity
- Чтобы Activity обновлялась, нужно либо держать приложение в бэкграунде, либо использовать пуши
- Нет способа подстроить внешний вид и цветовую палитру под обои
- Анимации почти не кастомизируются
🔥17👎5🤡5👍2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
ReMafoX – инструмент для простой локализации текстов

- ReMafoX – GUI для уже существующей CLI утилиты BartyCrouch
- Новые строки в Localizable.strings добавляются сразу же при определении их в Swift-файле
- Автоматический перевод строк на 40 языков
- Линтинг на тот случай, если какой-то ключ все-таки не перевелся
- Упрощенная работа с pluralized – их тоже можно определять и переводить, не закрывая исходный файл кода
- Скачать текущую актуальную версию можно здесь
🔥49😱2👎1
SQLite – структуры данных под капотом

SQLite – одна из самых простых и благодаря этому надежных баз данных. В статье подробно рассматриваются алгоритмы кодирования данных в ней, используемые структуры данных и алгоритмы поиска по ним.
👍19
Успеть за 60 секунд

У вашего приложения есть 60 секунд на то, чтобы стартовать, иначе системный watchdog его убьет. Посмотрите на интересный кейс со стектрейсом – приложение не успевает запуститься за выделенное время, потому что система не выделяет ему на это ресурсы и занимает CPU чем-то другим.
👍16
Content transition в SwiftUI

В последней версии SwiftUI появился встроенный механизм анимаций для изменений контента вьюшки. Например, текста или прозрачности TextView. Чтобы это заработало, достаточно просто использовать view modifier .contentTransition.
🕊22👍13👎2🔥1
2025/07/09 04:56:34
Back to Top
HTML Embed Code: