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

Связь: @devmangx
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Это ТАК раздражает, когда TextField не отображает весь введённый текст 😡

Но ты знал, что в SwiftUI есть встроенный способ решить эту проблему?

И что для этого нужен всего один ряд кода?

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Вот обзор различных вариантов расположения столбцов в Jetpack Compose

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5
Фишка по SwiftUI

Когда пилишь пейволл на SwiftUI с StoreKit, можно кастомизировать отображение подписок через модификатор subscriptionStoreControlStyle()

Сейчас в комплекте есть 6 встроенных стилей на выбор

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
В чем разница между Immutable и Stable в Compose?

🔸 Immutable следует использовать для действительно неизменяемых классов, которые не могут изменяться.

🔸 Stable означает, что данный класс не будет обновляться без уведомления наблюдателей. Например, класс, агрегирующий State, является стабильным, поскольку все наблюдатели State будут повторно перекомпонованы при изменении его значения. 𝐒𝐭𝐚𝐛𝐥𝐞 — это понятие, специфичное именно для Compose. Если аргумент компонуемой функции стабильный, нам не нужно проверять его содержимое, чтобы определить необходимость повторной перекомпоновки; достаточно проверить ссылку на объект.

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

❗️На данный момент Compose обрабатывает аннотации Immutable и Stable абсолютно одинаково

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

При отображении поповера вы можете настроить его положение с помощью параметра arrowEdge

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3
Forwarded from IT Portal
Xcode превратился в Cursor — туда завезли поддержку ChatGPT и других LLM. Можно подключаться по API или запускать локально

Причём для ChatGPT даже не нужен аккаунт OpenAI — доступен базовый режим с ограниченными лимитами

Apple также не забыли про важную для вайбкодеров фичу — поддержка Voice Control позволяет писать код голосом, общаясь с LLM напрямую

Обо всём этом рассказали сегодня на WWDC 2025. Запись презентации здесь

@IT_Portal
🔥103👎2
This media is not supported in your browser
VIEW IN TELEGRAM
Офигеть! Это происходит

Вот я на macOS 26 Beta запускаю контейнеры без установленного Docker

😱 НАТИВНАЯ ПОДДЕРЖКА КОНТЕЙНЕРОВ В MACOS

https://github.com/apple/container

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍4
Что такое Android Runtime?

Мы пишем код на Kotlin/Java, и при сборке APK он преобразуется в байткод.

В нашем APK-файле будут находиться .dex-файлы, содержащие байткод.

Наши Android-устройства не могут выполнять байткод напрямую, поэтому его необходимо транслировать в машинный код. Эта трансляция осуществляется средой выполнения Android — Android Runtime.

Kotlin/Java > байткод (.dex-файлы в APK) > машинный код

Теперь, когда мы знаем, что такое Android Runtime, пора узнать о различных типах Android Runtime и их эволюции:

🔸Dalvik
🔸ART

Узнайте больше здесь:
https://outcomeschool.com/blog/dalvik-art-jit-aot

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Новая анимация MagicReplace SF Symbols в SwiftUI

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6😁2
This media is not supported in your browser
VIEW IN TELEGRAM
VisualTransformation — это инструмент в Jetpack Compose, который позволяет изменять визуальное отображение текста в TextField, не затрагивая при этом фактическое значение ввода. Например, его можно использовать для маскировки цифр или вставки дефисов при вводе номера кредитной карты

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

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

Закрепи важные элементы интерфейса, например кнопку "Продолжить" на экране онбординга, с помощью модификатора safeAreaInset(), чтобы основной контент можно было скроллить независимо.

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75
This media is not supported in your browser
VIEW IN TELEGRAM
Принёс полезное — базу актуальных бесплатных API, которую регулярно обновляют 😇

Внутри аж 403 штуки на любой вкус: от игр и погоды до финансов и здоровья

Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика

Если апишка перестает работать или становится платной, она теряет рейтинг и удаляется с сайта

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😁1
Анонсирована рабочая группа Swift on Android — цель: сделать Android официально поддерживаемой платформой для Swift и поддерживать эту интеграцию на постоянной основе.

Подробнее тут: https://forums.swift.org/t/announcing-the-android-workgroup/80666

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥1
Использование Column для отображения длинного списка загружает все элементы сразу, что замедляет работу приложения

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

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3😁1🌚1
Новое в SwiftUI

Начиная с iOS 26.0+, можно задавать отступы для секций в List с помощью модификатора listSectionMargins()

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Gemini CLI — опенсорс AI-агент для разработчиков от Google, который работает прямо в терминале

На борту — Gemini 2.5 Pro, контекст 1М токенов, 60 запросов/мин и 1000 в сутки — бесплатно (нужен только гугл-аккаунт)

Можно писать и дебажить код, автоматизировать задачи, ресерчить

При желании можно прикрутить любой MCP сервер. Например, генерировать прямо из терминала картинки (Imagen) или видео (Veo)

npm install -g @google/gemini-cli


Исходники на GitHub

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍8🔥3🌭1
Jetpack Compose стал настоящим прорывом для Android

Но в сочетании с KMP (Kotlin Multiplatform) и Compose Multiplatform он действительно раскрывает потенциал кроссплатформенной разработки

Недавно закончил проект на KMP — всё прошло максимально гладко. Доступно много полезных библиотек и инструментов.

Если ты Java/Kotlin-разработчик и ещё не пробовал — самое время начать

🔸 Стартовый проект: https://terrakok.github.io/Compose-Multiplatform-Wizard/
🔸 Библиотеки: https://github.com/terrakok/kmp-awesome#contents
🔸 Шаблоны: https://kmp.jetbrains.com/templates/

В чём разница?
Compose Multiplatform = Jetpack Compose + Kotlin для всего (и UI, и логика)
KMP = Общая логика на Kotlin + нативный UI там, где нужно (Swift, Kotlin или Java)

Стартовать с Compose MP проще, чем когда-либо. Знание Swift пригодится, но не обязательно.

Компании, которые уже используют: https://jetbrains.com/help/kotlin-multiplatform-dev/case-studies.html

👉 @MobDevPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥4