MobDev Portal | Мобильная Разработка
5.98K subscribers
315 photos
63 videos
4 files
270 links
Присоединяйтесь к нашему каналу и погрузитесь в мир мобильной-разработки

Связь: @devmangx
Download Telegram
Челлендж 120FPS в SwiftUI: производительность LazyVStack

LazyVStack — это подход, рекомендуемый Apple для скроллируемых лент. Ленивые стеки подгружают и рендерят свои сабвью по требованию, когда они приближаются к вьюпорту (видимой на экране части вашего лейаута).

Трейс в Instruments при загрузке и скролле выглядит гораздо «здоровее». На нём видно, что VSync стабильно укладывается в целевые 16,67 мс на кадр для 60fps, даже в режиме энергосбережения.

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

Использование памяти у LazyVStack достаточно стабильное. Оно немного подскакивало, когда я скроллил очень быстро, но не было резких всплесков: данные вью выкидывались из памяти по мере того, как они уходили за пределы вьюпорта.

Полную статью смотрите здесь

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ZoomTransition в SwiftUI почти не поддается кастомизации, но «под капотом» у него есть опции вроде dimmingVisualEffect. С их помощью можно было бы воссоздать переходы, как в приложении Photos, но, к сожалению, эти API в SwiftUI приватные.

В этом демо используются приватные API. В UIKit эти опции доступны публично.

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
Совет по SwiftUI

В iOS 16+ используйте toolbarTitleMenu(), чтобы показывать меню при тапе по заголовку навигации.

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2
Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

Перевод на Хабре вот этой статьи, про паттерны загрузки данных во ViewModel.

- Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Совет по SwiftUI

Хотите, чтобы заголовок панели навигации оставался крупным, но был inline?

В iOS 17+ используйте .toolbarTitleDisplayMode(.inlineLarge).

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Exploring 5 Lesser-Known Compose Components

В статье рассматривают 5 малоизвестных Jetpack Compose компонентов, с примерами кода когда и как их использовать.

— TriStateCheckbox
— SegmentedButton
— RangeSlider
— Badge
— Tooltip

🔸Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Новое в SwiftUI

В iOS 26 мы наконец-то можем сделать так, чтобы кнопки растягивались на всю доступную ширину контейнера с помощью метода buttonSizing()

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
На GitHub есть репозиторий free-programming-books, где собрано более 4000 бесплатных книг, 2000 курсов и других полезных ресурсов по программированию

Для удобства поиска можно использовать этот инструмент

Этот проект - яркий пример силы опенсорс сообщества, который из клона списка со StackOverflow стал одним из самых популярных на GitHub ✌️

🔸 Русскоязычная версия ресурсов

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
This media is not supported in your browser
VIEW IN TELEGRAM
В этом туториале по SwiftUI мы соберём чистое, анимированное action-меню, вдохновлённое Grok. Вы научитесь создавать плавающую панель инструментов с плавными переходами, размытием фона и закрытием по тапу

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
Совет по симулятору iOS: можно установить время в симуляторе на фиксированные 9:41, как на маркетинговых скриншотах Apple.

Замените [DEVICE_ID] на UUID вашего симулятора (найти его можно командой: xcrun simctl list devices)

Идеально для чистых скриншотов приложения

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥2
Совет по SwiftUI

Модификатор glassEffect() по умолчанию применяет форму капсулы, но вы легко можете изменить её на любую другую форму по своему усмотрению.

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2
Совет по SwiftUI

Используй .toolbarTitleDisplayMode(.inlineLarge), чтобы показывать крупный заголовок Navigation Title, оставаясь в inline-режиме - отлично подходит для компактных layout’ов.

(iOS 17.0+)

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Почему моё Android-приложение крашится?

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

- Zygote и запуск приложений
- Как Android обрабатывает непойманные исключения?
- Кто сообщает о краше?
- Почему в итоге приложение закрывается?
- А можно ли сделать так, чтобы оно не закрывалось?

🟡Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
SwiftUI совет

По умолчанию бейджи в таб-баре отображаются красным цветом

Вы можете изменить их цвет как для обычного, так и для выбранного состояния всего несколькими строками UIKit-кода.

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Forwarded from IT Portal
Swift-разработчики, подъехало мощное: Apple официально завезли Swift SDK для Android. Теперь можно писать бизнес-логику под Android на том же Swift

Уже 25% пакетов в Swift Package Index нормально собираются под Android. Примеры Android-проектов с использованием Swift SDK можно найти на GitHub

Гайд по старту тут

@IT_Portal
12👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Pulse Indicator in Jetpack Compose

Пример реализации вот такого пульсирующего индикатора на Jetapck Compose.

🔸Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
SwiftUI совет

В iOS 16+ можно сделать так, чтобы TextField автоматически расширялся по вертикали по мере ввода текста, для этого достаточно установить параметр axis в значение .vertical

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥102
К вопросу о шифровании данных на мобильных устройствах бизнес-пользователей

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

- Процесс шифрования данных
- Симметричные алгоритмы шифрования
- Асимметричные алгоритмы шифрования
- Шифрование на Android с помощью библиотек Cipher и SQLCipher
- Шифрование по ГОСТ: есть ли перспективы?

Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Kotlin Mutex: Thread-Safe Concurrency for Coroutines

Крутая статья про то, как писать потокобезопасный код используя Kotlin Mutex с Корутинами. Там и кейсы, и ошибки, и лучшие практики, в общем всё как мы любим 🔥.

- What is Mutex?
- Core Use Cases for Mutex
- Best Practices
- Mutex vs. Other Synchronization Methods
- Common Pitfalls
- Performance Considerations
- Real-World Example: Thread-Safe Repository
- Testing Mutex-Protected Code
- Final Thoughts

🔸Читать

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Совет по SwiftUI

В iOS 26.0+ можно сделать так, чтобы кнопки автоматически расширялись, заполняя всю доступную ширину контейнера, с помощью модификатора .buttonSizing(.flexible)

Идеально подходит для онбординга и paywall-экранов

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4