Полное руководство по написанию чистого кода Jetpack Compose
Это руководство призвано помочь разработчикам освоить лучшие практики Jetpack Compose, обеспечив правильное наименование, структуру и управление композитными функциями.
В нем рассматриваются такие ключевые принципы, как правильное использование модификаторов, важность компонентов без состояния и контролируемых компонентов, а также эффективная обработка состояния путем его поднятия.
Следуя этим рекомендациям, разработчики смогут создавать модульные, поддерживаемые и производительные пользовательские интерфейсы, в полной мере использующие возможности декларативной природы Compose.
Статья: https://apptractor.ru/info/articles/polnoe-rukovodstvo-po-napisaniyu-chistogo-koda-jetpack-compose.html
Платформа: Android
Это руководство призвано помочь разработчикам освоить лучшие практики Jetpack Compose, обеспечив правильное наименование, структуру и управление композитными функциями.
В нем рассматриваются такие ключевые принципы, как правильное использование модификаторов, важность компонентов без состояния и контролируемых компонентов, а также эффективная обработка состояния путем его поднятия.
Следуя этим рекомендациям, разработчики смогут создавать модульные, поддерживаемые и производительные пользовательские интерфейсы, в полной мере использующие возможности декларативной природы Compose.
Статья: https://apptractor.ru/info/articles/polnoe-rukovodstvo-po-napisaniyu-chistogo-koda-jetpack-compose.html
Платформа: Android
❤1
Делаем поисковые подсказки в SwiftU
Модификатор searchSuggestions(_:) в SwiftUI — это мощная функция, которая улучшает работу поиска в приложениях для iOS. В сочетании с отслеживанием недавних поисковых запросов он создает интуитивно понятный интерфейс, который помогает пользователям быстро найти то, что они ищут, и легко вернуться к ранее просмотренным элементам.
Давайте создадим приложение для каталога Apple Products, которое продемонстрирует возможности поиска в SwiftUI. Мы реализуем интеллектуальную систему поиска, которая не только фильтрует товары в режиме реального времени, но и предоставляет предложения по поиску, а также отслеживает недавно просмотренные товары.
Статья: https://apptractor.ru/info/articles/delaem-poiskovye-podskazki-v-swiftui.html
Платформа: iOS
Модификатор searchSuggestions(_:) в SwiftUI — это мощная функция, которая улучшает работу поиска в приложениях для iOS. В сочетании с отслеживанием недавних поисковых запросов он создает интуитивно понятный интерфейс, который помогает пользователям быстро найти то, что они ищут, и легко вернуться к ранее просмотренным элементам.
Давайте создадим приложение для каталога Apple Products, которое продемонстрирует возможности поиска в SwiftUI. Мы реализуем интеллектуальную систему поиска, которая не только фильтрует товары в режиме реального времени, но и предоставляет предложения по поиску, а также отслеживает недавно просмотренные товары.
Статья: https://apptractor.ru/info/articles/delaem-poiskovye-podskazki-v-swiftui.html
Платформа: iOS
SwiftfulFirestore - удобные функции для использования Firebase Firestore с Swift Concurrency.
SwiftfulFirestore на GitHub: https://github.com/SwiftfulThinking/SwiftfulFirestore
Платформа: iOS
⭐️: 20
SwiftfulFirestore на GitHub: https://github.com/SwiftfulThinking/SwiftfulFirestore
Платформа: iOS
⭐️: 20
BDUI — это спасение от релизов: «Какие ваши доказательства?»
Если вы видели no-code-проекты, где можно просто блоками перетаскивать интерфейс, то отчасти вы уже знакомы с BDUI-подходом, ведь они по сути и построены на BDUI. Суть в том, что мы делегируем наполнение интерфейса серверу. Фронтенд не отвечает за то, что будет нарисовано, а только определяет список допустимых компонент, которые сервер может показать пользователю. Но в вебе BDUI не очень популярен.
А зря. Ведь в первую очередь он нужен как спасение от релизов.
Но, если быть точнее, он нужен как средство для снижения количества релизов, затрат на разработку и выкатку фичей. Давайте это и обсудим, а также как работает BDUI, разберём примеры, реализованную фичу, которую мы недавно релизили, посмотрим на другие варианты реализации и подведём итоги.
Статья: https://habr.com/ru/companies/alfa/articles/861384/
Платформа: разработка
Если вы видели no-code-проекты, где можно просто блоками перетаскивать интерфейс, то отчасти вы уже знакомы с BDUI-подходом, ведь они по сути и построены на BDUI. Суть в том, что мы делегируем наполнение интерфейса серверу. Фронтенд не отвечает за то, что будет нарисовано, а только определяет список допустимых компонент, которые сервер может показать пользователю. Но в вебе BDUI не очень популярен.
А зря. Ведь в первую очередь он нужен как спасение от релизов.
Но, если быть точнее, он нужен как средство для снижения количества релизов, затрат на разработку и выкатку фичей. Давайте это и обсудим, а также как работает BDUI, разберём примеры, реализованную фичу, которую мы недавно релизили, посмотрим на другие варианты реализации и подведём итоги.
Статья: https://habr.com/ru/companies/alfa/articles/861384/
Платформа: разработка
👍1
Сравнение Koin и Dagger Hilt в современной Android-разработке
При выборе фреймворка для инъекции зависимостей для разработки на Kotlin для Android производительность часто является ключевым фактором. В этой статье рассматривается производительность Koin в его последней версии (4.0.1-Beta1) и проводится сравнение с Dagger Hilt (2.52). Вместо того чтобы полагаться на упрощенные бенчмарки или ограниченные сценарии выполнения кода, мы ориентируемся на разработчиков: понимание производительности в реальном мире, при повседневном использовании. Кроме того, эта статья призвана успокоить тех, кто, возможно, колеблется в выборе Koin из-за проблем с производительностью.
Статья: https://apptractor.ru/info/articles/sravnenie-koin-i-dagger-hilt-v-sovremennoy-android-razrabotke.html
Платформа: Android
При выборе фреймворка для инъекции зависимостей для разработки на Kotlin для Android производительность часто является ключевым фактором. В этой статье рассматривается производительность Koin в его последней версии (4.0.1-Beta1) и проводится сравнение с Dagger Hilt (2.52). Вместо того чтобы полагаться на упрощенные бенчмарки или ограниченные сценарии выполнения кода, мы ориентируемся на разработчиков: понимание производительности в реальном мире, при повседневном использовании. Кроме того, эта статья призвана успокоить тех, кто, возможно, колеблется в выборе Koin из-за проблем с производительностью.
Статья: https://apptractor.ru/info/articles/sravnenie-koin-i-dagger-hilt-v-sovremennoy-android-razrabotke.html
Платформа: Android
👍1🔥1
Material Photo Widget настолько прост, насколько это возможно: виджет на главный экран для отображения фото или коллекции фото. Это бесплатная, без рекламы и с открытым исходным кодом альтернатива для тех, кто хочет настроить главный экран с помощью любимых фотографий.
Помимо своего функционала, Material Photo Widget - это “игровая площадка” для изучения и освоения современной Android-разработки. В нем чистый и красивый пользовательский интерфейс, созданный с помощью Jetpack Compose и рекомендаций Google по материальному дизайну, поддержка тематического оформления Material You, Android Jetpack, включая Jetpack Compose, виджеты главного экрана.
Material Photo Widget на GitHub: https://github.com/fibelatti/photo-widget
Платформа: Android
⭐️: 127
Помимо своего функционала, Material Photo Widget - это “игровая площадка” для изучения и освоения современной Android-разработки. В нем чистый и красивый пользовательский интерфейс, созданный с помощью Jetpack Compose и рекомендаций Google по материальному дизайну, поддержка тематического оформления Material You, Android Jetpack, включая Jetpack Compose, виджеты главного экрана.
Material Photo Widget на GitHub: https://github.com/fibelatti/photo-widget
Платформа: Android
⭐️: 127
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Как оптимизировали Яндекс Go для отображения 50+ заказов•
(iOS Ru) Кодогенерация в iOS-разработке•
(iOS En) Interactive Navigation Gesture | SwiftUI•
(iOS En) Swift Testing with Test Plans and Floating Point Equality•
(iOS En) Building a Reading List App•
(iOS En) Create an Animated Mesh Gradient in SwiftUI•
(And Ru) Плагины — это просто•
(And Ru) Как Jetpack ViewModel переживает поворот экрана•
(And En) Clipping and masking | Jetpack Compose Tips•
(And En) Rules about performance tools - Android Developers Backstage•
(And En) How to Observe the REAL Internet Connectivity - Android Studio Kotlin Tutorial•
(And En) The Ultimate Gradle Kotlin Beginner's Crash Course For 2025•
(Crs Ru) Профилирование Flutter-приложений•
(Crs Ru) Понимание PWA: выбираем между Flutter и Web, и что ожидают заказчики•
(Crs En) Let's Build a Game with Jetpack Compose! (Kotlin Multiplatform)•
(Dev Ru) Ускорение разработки продуктов с помощью горизонтальных решений•
(Dev Ru) Перестаньте использовать Copilot. Вред ИИ для разработчиков•
(Dev Ru) Топ-5 страхов и проблем ИТ-индустрии — монополизация, ИИ, сокращения, выгорания•
(Dev En) Event-Driven Architecture Course – NextJS, Clerk, Webhooks#ios #android #mobile #video
🔥1
ATProtoKit - это простая в понимании API-библиотека, которая использует протокол AT с безопасностью типов и простотой использования, которые вы привыкли ожидать от языка программирования Swift. Независимо от того, создаете ли вы бота, серверное приложение или просто еще один пользовательский клиент Bluesky, этот проект, надеюсь, поможет вам ускорить разработку.
AT протокол — это открытый децентрализованный протокол, созданный для социальных сетей. Его цель — предоставить пользователям больше контроля над их данными, улучшить совместимость между платформами и обеспечить независимость от централизованных сервисов. Bluesky разрабатывается с акцентом на открытость и прозрачность, а AT Protocol (ранее известный как ADX) лежит в его основе.
ATProtoKit на GitHub: https://github.com/MasterJ93/ATProtoKit
Платформа: iOS
⭐️: 84
AT протокол — это открытый децентрализованный протокол, созданный для социальных сетей. Его цель — предоставить пользователям больше контроля над их данными, улучшить совместимость между платформами и обеспечить независимость от централизованных сервисов. Bluesky разрабатывается с акцентом на открытость и прозрачность, а AT Protocol (ранее известный как ADX) лежит в его основе.
ATProtoKit на GitHub: https://github.com/MasterJ93/ATProtoKit
Платформа: iOS
⭐️: 84
👍3❤1🔥1
Всё о новых штрафах за утечки данных. Сколько светит и как защитить своё приложение
В 2023 году Роскомнадзор выявил 168 утечек персональных данных, затронувших 300 млн записей о клиентах Сбера, Спортмастера, Здравсити, МТС Банка и других крупных компаний. Суды рассмотрели 87 дел и назначили штрафы на общую сумму почти в 5 млн рублей. Таких «щадящих» наказаний за нарушения в работе с данными больше не будет, ведь на этой неделе Госдума ужесточила ответственность за подобные инциденты. Суть изменений в том, что для компаний штрафы вырастут до 3% от выручки или до 500 миллионов рублей.
По оценке нововведения затронут каждую третью компанию в стране. Поэтому сегодня совместно с лидом Android-разработки Surf Алексеем Рябковым попробуем рассказать, что владельцам приложений стоит сделать и проверить, чтобы обезопасить себя и свой продукт от возможных утечек.
Статья: https://habr.com/ru/companies/surfstudio/articles/862048/
Платформа: разработка
В 2023 году Роскомнадзор выявил 168 утечек персональных данных, затронувших 300 млн записей о клиентах Сбера, Спортмастера, Здравсити, МТС Банка и других крупных компаний. Суды рассмотрели 87 дел и назначили штрафы на общую сумму почти в 5 млн рублей. Таких «щадящих» наказаний за нарушения в работе с данными больше не будет, ведь на этой неделе Госдума ужесточила ответственность за подобные инциденты. Суть изменений в том, что для компаний штрафы вырастут до 3% от выручки или до 500 миллионов рублей.
По оценке нововведения затронут каждую третью компанию в стране. Поэтому сегодня совместно с лидом Android-разработки Surf Алексеем Рябковым попробуем рассказать, что владельцам приложений стоит сделать и проверить, чтобы обезопасить себя и свой продукт от возможных утечек.
Статья: https://habr.com/ru/companies/surfstudio/articles/862048/
Платформа: разработка
👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Анимируем представления UIKit с помощью анимации SwiftUI
В iOS 18 появилась новая мощная функция: возможность анимировать представления UIKit с помощью типов анимации SwiftUI. Это еще больше сокращает разрыв между двумя фреймворками, позволяя нам привнести гибкость и выразительность системы анимации SwiftUI в проекты на базе UIKit.
Статья: https://apptractor.ru/info/articles/animiruem-predstavleniya-uikit-s-pomoschyu-animatsii-swiftui.html
Платформа: iOS
В iOS 18 появилась новая мощная функция: возможность анимировать представления UIKit с помощью типов анимации SwiftUI. Это еще больше сокращает разрыв между двумя фреймворками, позволяя нам привнести гибкость и выразительность системы анимации SwiftUI в проекты на базе UIKit.
Статья: https://apptractor.ru/info/articles/animiruem-predstavleniya-uikit-s-pomoschyu-animatsii-swiftui.html
Платформа: iOS
❤2🔥1
С появлением Jetpack Compose разработчики Android могут использовать всю мощь Kotlin для создания компонентов пользовательского интерфейса, отказавшись от традиционных XML-макетов. Однако интеграция векторных активов, таких как иконки, часто все еще зависит от использования ресурсов Android Vector Drawables (AVD/XML).
SVG to Compose - набор инструментов для преобразования файлов SVG или Android Vector Drawable (AVD/XML) в иконки Jetpack Compose. Этот проект предоставляет утилиту командной строки для ручного преобразования и плагин Gradle для автоматизации преобразования в процессе сборки.
Этот проект призван упростить интеграцию векторных ресурсов в приложения Compose, предоставляя инструменты, которые конвертируют файлы SVG или AVD непосредственно в объекты Compose ImageVector, следуя тому же подходу, который используется для Material Icons от Google.
SVG to Compose на GitHub: https://github.com/rafaeltonholo/noscript-to-compose
Платформа: Android
⭐️: 103
SVG to Compose - набор инструментов для преобразования файлов SVG или Android Vector Drawable (AVD/XML) в иконки Jetpack Compose. Этот проект предоставляет утилиту командной строки для ручного преобразования и плагин Gradle для автоматизации преобразования в процессе сборки.
Этот проект призван упростить интеграцию векторных ресурсов в приложения Compose, предоставляя инструменты, которые конвертируют файлы SVG или AVD непосредственно в объекты Compose ImageVector, следуя тому же подходу, который используется для Material Icons от Google.
SVG to Compose на GitHub: https://github.com/rafaeltonholo/noscript-to-compose
Платформа: Android
⭐️: 103
👍2🔥2👎1
Изогнутое нижнее меню в Jetpack Compose
Сегодня я покажу вам, как создать изогнутое нижнее меню в Jetpack Compose.
Статья: https://apptractor.ru/info/articles/izognutoe-nizhnee-menyu-v-jetpack-compose.html
Платформа: Android
Сегодня я покажу вам, как создать изогнутое нижнее меню в Jetpack Compose.
Статья: https://apptractor.ru/info/articles/izognutoe-nizhnee-menyu-v-jetpack-compose.html
Платформа: Android
👍1
MotionMachine предоставляет модульную, мощную и универсальную платформу для манипулирования значениями, будь то анимация UI элементов или интерполяция значений свойств в ваших собственных классах. Она предлагает разумную функциональность по умолчанию, которая абстрагирует большую часть сложной работы, позволяя вам сосредоточиться на работе. Несмотря на то, что MotionMachine не зависит от типов, он поддерживает большинство основных типов UIKit и предоставляет “синтаксический сахар” для удобной работы с ними. Но его также легко модифицировать под свои нужды, будь то пользовательские классы движений, поддержка пользовательских типов значений или новые уравнения плавности.
• Анимационный движок, созданный с нуля (не привязан к Core Animation).
• Анимируйте системные свойства, UIView или любые общие классы, используя множество уравнений плавности.
• Предоставляет статические и основанные на физике классы движения для изменения нескольких значений свойств, и оба поддерживают аддитивную анимацию.
• Предоставляет статические и основанные на физике классы движения, которые могут анимировать CGPoint вдоль CGPath, даже часть пути.
• Все классы движений могут быть сгруппированы, последовательны и вложены друг в друга в любом порядке, а реверсивные и повторяющиеся действия могут применяться на любом уровне.
• Мощная модульность - большинство аспектов могут быть настроены или полностью заменены в соответствии с вашими конкретными потребностями.
• Полностью протестирован
• Полностью документирован
MotionMachine на GitHub: https://github.com/poetmountain/MotionMachine
Платформа: iOS
⭐️: 380
• Анимационный движок, созданный с нуля (не привязан к Core Animation).
• Анимируйте системные свойства, UIView или любые общие классы, используя множество уравнений плавности.
• Предоставляет статические и основанные на физике классы движения для изменения нескольких значений свойств, и оба поддерживают аддитивную анимацию.
• Предоставляет статические и основанные на физике классы движения, которые могут анимировать CGPoint вдоль CGPath, даже часть пути.
• Все классы движений могут быть сгруппированы, последовательны и вложены друг в друга в любом порядке, а реверсивные и повторяющиеся действия могут применяться на любом уровне.
• Мощная модульность - большинство аспектов могут быть настроены или полностью заменены в соответствии с вашими конкретными потребностями.
• Полностью протестирован
• Полностью документирован
MotionMachine на GitHub: https://github.com/poetmountain/MotionMachine
Платформа: iOS
⭐️: 380
❤1
Настройка Sora Editor
В статье хочу показать как настроить SoraEditor от Resomoe. А конкретно то цветовую схему, язык и простые сниппеты. Так как я не нашел статей по этой теме, а также оффициальная документация в некоторых местах противоречива и не доделана, я решил написать данную статью. Весь код в статье будет на Java.
Статья: https://habr.com/ru/articles/863272/
Платформа: Android
В статье хочу показать как настроить SoraEditor от Resomoe. А конкретно то цветовую схему, язык и простые сниппеты. Так как я не нашел статей по этой теме, а также оффициальная документация в некоторых местах противоречива и не доделана, я решил написать данную статью. Весь код в статье будет на Java.
Статья: https://habr.com/ru/articles/863272/
Платформа: Android
Портал, манулы и мячи: опыт разработки для Apple Vision Pro. Часть 2
В первой части статьи я рассказал о двух мини-играх, которые мы с командой разработали для Apple Vision Pro для хакатона Ludum Dare, и особенностях работы с дополненной реальностью. В этой – поделюсь опытом индивидуальной разработки для гарнитуры, общими впечатлениями о работе с ней и несколькими идеями разработки под неё.
Статья: https://habr.com/ru/articles/863046/
Платформа: iOS
В первой части статьи я рассказал о двух мини-играх, которые мы с командой разработали для Apple Vision Pro для хакатона Ludum Dare, и особенностях работы с дополненной реальностью. В этой – поделюсь опытом индивидуальной разработки для гарнитуры, общими впечатлениями о работе с ней и несколькими идеями разработки под неё.
Статья: https://habr.com/ru/articles/863046/
Платформа: iOS
Удобная навигация в SwiftUI для iOS 16 и выше
Со временем я перепробовал множество методов навигации, но этот оказался самым удачным и приятным для меня в реализации. Этот пример хорошо масштабируется как по горизонтали, так и по вертикали и отлично подходит для покрытия UI и Unit-тестами.
Статья: https://apptractor.ru/info/articles/udobnaya-navigatsiya-v-swiftui-dlya-ios-16-i-vyshe.html
Платформа: iOS
Со временем я перепробовал множество методов навигации, но этот оказался самым удачным и приятным для меня в реализации. Этот пример хорошо масштабируется как по горизонтали, так и по вертикали и отлично подходит для покрытия UI и Unit-тестами.
Статья: https://apptractor.ru/info/articles/udobnaya-navigatsiya-v-swiftui-dlya-ios-16-i-vyshe.html
Платформа: iOS
AppTractor
Удобная навигация в SwiftUI для iOS 16 и выше
Со временем я перепробовал множество методов навигации, но этот оказался самым удачным и приятным для меня в реализации.
От Kotlin до машинного кода
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
Статья: https://habr.com/ru/articles/863146/
Платформа: Android
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
Статья: https://habr.com/ru/articles/863146/
Платформа: Android
Aerial Views - скринсейвер для устройств Android TV, включая Nvidia Shield, Fire TV и Chromecast с Google TV. Вдохновлен скринсейвером Apple TV. Поддерживает 4K Dolby Vision (HDR) видео, содержит более 150 видео от Apple, Jetson Creative и пр., проигрывает видео из разных локальных источников, есть защита от выгорания QD/OLED и пр.
Aerial Views на GitHub: https://github.com/theothernt/AerialViews
Платформа: Android
⭐️: 524
Aerial Views на GitHub: https://github.com/theothernt/AerialViews
Платформа: Android
⭐️: 524
Cursor AI в iOS-разработке. Приложение «Фото с Flickr.com»
Мне хотелось посмотреть, как работает ИИ Редактор кода Cursor AI на примере создания iOS приложения с выборкой данных с ресурса, который не требует API key и платной подписки. И этим ресурсом оказались публичные фотографии с Flickr.com.
Статья: https://habr.com/ru/articles/863314/
Платформа: iOS
Мне хотелось посмотреть, как работает ИИ Редактор кода Cursor AI на примере создания iOS приложения с выборкой данных с ресурса, который не требует API key и платной подписки. И этим ресурсом оказались публичные фотографии с Flickr.com.
Статья: https://habr.com/ru/articles/863314/
Платформа: iOS
Вопперы и табы: как мы сделали меню для Burger King
В прошлом году у нашей Android-команды на проекте Burger King был мощный вызов: сделать редизайн главного меню. Задача была непростая по двум причинам.
Первая — легаси код. Вторая — А/В тестирование.
И результат — старое меню и его логику нужно сохранить. Мы решили написать меню с нуля. Так было бы проще организовать А/В тест и потом избавиться от старого меню (не волнуйтесь, при создании нового меню ни один воппер не пострадал).
Статья: https://habr.com/ru/companies/surfstudio/articles/861264/
Платформа: Android
В прошлом году у нашей Android-команды на проекте Burger King был мощный вызов: сделать редизайн главного меню. Задача была непростая по двум причинам.
Первая — легаси код. Вторая — А/В тестирование.
И результат — старое меню и его логику нужно сохранить. Мы решили написать меню с нуля. Так было бы проще организовать А/В тест и потом избавиться от старого меню (не волнуйтесь, при создании нового меню ни один воппер не пострадал).
Статья: https://habr.com/ru/companies/surfstudio/articles/861264/
Платформа: Android
Как я уменьшил размер банковского приложения для iOS на 50%
TPBank - это мое вьетнамское банковское приложение, которым я пользуюсь каждый день уже 6 лет. Недавно я впервые посмотрел на размер приложения и был шокирован.
650 МБ. В 2 раза больше, чем средний размер банковского приложения в стране.
Мне стало любопытно, и я решил разобраться в этом.
В этой статье я расскажу о том, что мне удалось обнаружить, и о некоторых решениях, позволяющих сократить размер приложения вдвое. Надеюсь, вы сможете чему-то научиться и применить эти приемы в своем iOS-проекте.
Статья: https://apptractor.ru/info/articles/kak-ya-umenshil-razmer-bankovskogo-prilozheniya-dlya-ios-na-50.html
Платформа: iOS
TPBank - это мое вьетнамское банковское приложение, которым я пользуюсь каждый день уже 6 лет. Недавно я впервые посмотрел на размер приложения и был шокирован.
650 МБ. В 2 раза больше, чем средний размер банковского приложения в стране.
Мне стало любопытно, и я решил разобраться в этом.
В этой статье я расскажу о том, что мне удалось обнаружить, и о некоторых решениях, позволяющих сократить размер приложения вдвое. Надеюсь, вы сможете чему-то научиться и применить эти приемы в своем iOS-проекте.
Статья: https://apptractor.ru/info/articles/kak-ya-umenshil-razmer-bankovskogo-prilozheniya-dlya-ios-na-50.html
Платформа: iOS