Compose + Koin + Jetpack Navigation: что мы поняли за 2 года
Большая и полезная статья от разработчика core-команды WB Partners Wildberries & Russ, в которой он делится опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями столкнулись, как укротили навигацию от Google и каким образом всё это подружили с Koin.
🔸 Читать
👉 @MobDevPortal
Большая и полезная статья от разработчика core-команды WB Partners Wildberries & Russ, в которой он делится опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями столкнулись, как укротили навигацию от Google и каким образом всё это подружили с Koin.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3
Совет по SwiftUI
В iOS 26 элементы тулбара по умолчанию получают стеклянный эффект фона.
Управлять его видимостью можно модификатором
👉 @MobDevPortal
В iOS 26 элементы тулбара по умолчанию получают стеклянный эффект фона.
Управлять его видимостью можно модификатором
sharedBackgroundVisibility().Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Годный сайт с наглядной демонстрацией процесса рекомпозиции, с примерами удачных и неудачных практик:
https://ivk1800.github.io/recomposition-visualization/
Подробности реализации описаны в статье, а исходный код выложен на GitHub
👉 @MobDevPortal
https://ivk1800.github.io/recomposition-visualization/
Подробности реализации описаны в статье, а исходный код выложен на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤2👍2
Clipping and Masking in Jetpack Compose
Полезная статья про то, как в Jetpack Compose использовать Clipping и Masking для более дружелюбного UI: как обрезать компонент, кастомные шейпы, наложение градиента, различные эффекты и режимы наложение.
🔸 Читать
👉 @MobDevPortal
Полезная статья про то, как в Jetpack Compose использовать Clipping и Masking для более дружелюбного UI: как обрезать компонент, кастомные шейпы, наложение градиента, различные эффекты и режимы наложение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥2👀1
Быстрый совет по Flutter: как показать Live Activity на iOS с помощью Flutter
(это не так уж сложно)
вот как сделать это шаг за шагом 👆
👉 @MobDevPortal
(это не так уж сложно)
вот как сделать это шаг за шагом 👆
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Media is too big
VIEW IN TELEGRAM
Отличная библиотека анимаций для разработчиков React Native
Она упрощает создание плавных, высокопроизводительных анимаций и добавление движения в ваш UI
https://github.com/software-mansion/react-native-reanimated
👉 @MobDevPortal
Она упрощает создание плавных, высокопроизводительных анимаций и добавление движения в ваш UI
https://github.com/software-mansion/react-native-reanimated
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Челлендж 120FPS в SwiftUI: производительность LazyVStack
LazyVStack — это подход, рекомендуемый Apple для скроллируемых лент. Ленивые стеки подгружают и рендерят свои сабвью по требованию, когда они приближаются к вьюпорту (видимой на экране части вашего лейаута).
Трейс в Instruments при загрузке и скролле выглядит гораздо «здоровее». На нём видно, что VSync стабильно укладывается в целевые 16,67 мс на кадр для 60fps, даже в режиме энергосбережения.
При скролле вниз через сотни элементов мы получаем лишь несколько совсем незначительных просадок фреймрейта, но без лагов. С точки зрения SwiftUI, на экране одновременно находится всего несколько айтемов, поэтому всё можно без проблем посчитать и отрендерить в те миллисекунды, что есть между кадрами.
Использование памяти у LazyVStack достаточно стабильное. Оно немного подскакивало, когда я скроллил очень быстро, но не было резких всплесков: данные вью выкидывались из памяти по мере того, как они уходили за пределы вьюпорта.
Полную статью смотрите здесь
👉 @MobDevPortal
LazyVStack — это подход, рекомендуемый Apple для скроллируемых лент. Ленивые стеки подгружают и рендерят свои сабвью по требованию, когда они приближаются к вьюпорту (видимой на экране части вашего лейаута).
Трейс в Instruments при загрузке и скролле выглядит гораздо «здоровее». На нём видно, что VSync стабильно укладывается в целевые 16,67 мс на кадр для 60fps, даже в режиме энергосбережения.
При скролле вниз через сотни элементов мы получаем лишь несколько совсем незначительных просадок фреймрейта, но без лагов. С точки зрения SwiftUI, на экране одновременно находится всего несколько айтемов, поэтому всё можно без проблем посчитать и отрендерить в те миллисекунды, что есть между кадрами.
Использование памяти у LazyVStack достаточно стабильное. Оно немного подскакивало, когда я скроллил очень быстро, но не было резких всплесков: данные вью выкидывались из памяти по мере того, как они уходили за пределы вьюпорта.
Полную статью смотрите здесь
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 почти не поддается кастомизации, но «под капотом» у него есть опции вроде
В этом демо используются приватные API. В UIKit эти опции доступны публично.
👉 @MobDevPortal
dimmingVisualEffect. С их помощью можно было бы воссоздать переходы, как в приложении Photos, но, к сожалению, эти API в SwiftUI приватные.В этом демо используются приватные API. В UIKit эти опции доступны публично.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Совет по SwiftUI
В iOS 16+ используйте
👉 @MobDevPortal
В iOS 16+ используйте
toolbarTitleMenu(), чтобы показывать меню при тапе по заголовку навигации.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2
Загрузка данных во ViewModel: рекомендации и Flow-based архитектура
Перевод на Хабре вот этой статьи, про паттерны загрузки данных во ViewModel.
- Читать
👉 @MobDevPortal
Перевод на Хабре вот этой статьи, про паттерны загрузки данных во ViewModel.
- Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Совет по SwiftUI
Хотите, чтобы заголовок панели навигации оставался крупным, но был inline?
В iOS 17+ используйте
👉 @MobDevPortal
Хотите, чтобы заголовок панели навигации оставался крупным, но был inline?
В iOS 17+ используйте
.toolbarTitleDisplayMode(.inlineLarge).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
В статье рассматривают 5 малоизвестных Jetpack Compose компонентов, с примерами кода когда и как их использовать.
— TriStateCheckbox
— SegmentedButton
— RangeSlider
— Badge
— Tooltip
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Новое в SwiftUI
В iOS 26 мы наконец-то можем сделать так, чтобы кнопки растягивались на всю доступную ширину контейнера с помощью метода
👉 @MobDevPortal
В iOS 26 мы наконец-то можем сделать так, чтобы кнопки растягивались на всю доступную ширину контейнера с помощью метода
buttonSizing()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
Для удобства поиска можно использовать этот инструмент
Этот проект - яркий пример силы опенсорс сообщества, который из клона списка со StackOverflow стал одним из самых популярных на GitHub
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.
Замените
Идеально для чистых скриншотов приложения
👉 @MobDevPortal
Замените
[DEVICE_ID] на UUID вашего симулятора (найти его можно командой: xcrun simctl list devices)Идеально для чистых скриншотов приложения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥2
Совет по SwiftUI
Модификатор
👉 @MobDevPortal
Модификатор
glassEffect() по умолчанию применяет форму капсулы, но вы легко можете изменить её на любую другую форму по своему усмотрению.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2