Уменьшаем вес приложения и ускоряем его работу: 5 стратегий управления изображениями в iOS
Оптимизация работы с изображениями — задача, которую многие разработчики часто упускают из виду. Но именно эти ресурсы могут существенно влиять на производительность, размер приложения и даже на удобство командной разработки.
PNG или PDF: что выбрать?
Если вы хотите уменьшить размер приложения — юзаем PNG. Несмотря на популярность PDF-изображений из-за удобства масштабирования и поддержки в Xcode, они весят больше.
До Xcode 15 PDF при архивировании разлетались на три PNG-файла. Теперь их конвертируют в три PDF-файла — объем ресурсов взлетает кратно.
• Используйте PNG для стандартных изображений.
• PDF подходит для тех случаев, когда важна векторная графика и масштабируемость.
Сжимаем изображения
Перед добавлением изображений в проект проверьте их размер. Даже минимальная компрессия может уменьшить вес файлов на 80% без заметной потери качества.
• Попробуйте плагин TinyImage Compressor для Figma.
• В больших командах удобно автоматизировать проверку новых изображений через pre-commit hook. Если размер файла превышает 100 КБ, разработчику предлагается его сжать.
Используйте изображения подходящего размера
Каждый раз, когда вы загружаете изображение, оно занимает память пропорционально своим размерам, а не весу файла.
Например, картинка размером 6000x4000 пикселей займет 96 МБ оперативной памяти, даже если она сжимается до 5 МБ. Если ее выводить в UIImageView размером 300x200 — израсходуете слишком много ресурсов.
• Apple рекомендует использовать технику Downsampling для уменьшения размеров изображения перед выводом:
Создайте кастомный класс UIImageView, который будет предупреждать, если изображение слишком большое для текущей рамки. Так сможете быстрее обнаружить проблему и оптимизировать ее.
Дубли — в помойку
В крупных проектах часто встречаются одинаковые изображения, добавленные разными разработчиками. Это увеличивает размер приложения и создает путаницу в управлении ресурсами.
• Настройте скрипт для автоматического поиска дубликатов на Python.
• Интегрируйте проверку в CI/CD-пайплайн, чтобы регулярно получать отчеты о дубликатах.
Удаляем неиспользуемые изображения
Регулярно удаляйте файлы, которые уже не юзаете.
• FengNiao — опенсорсный инструмент, который автоматически находит неиспользуемые изображения. Его можно настроить на отправку уведомлений в командный чат — так не грохните лишнее.
Эти пять стратегий помогут уменьшить размер приложения и оптимизиваровать его производительность. Убирайте за собой — тогда и клиентам будет комфортнее юзать ваш софт.
Оптимизация работы с изображениями — задача, которую многие разработчики часто упускают из виду. Но именно эти ресурсы могут существенно влиять на производительность, размер приложения и даже на удобство командной разработки.
PNG или PDF: что выбрать?
Если вы хотите уменьшить размер приложения — юзаем PNG. Несмотря на популярность PDF-изображений из-за удобства масштабирования и поддержки в Xcode, они весят больше.
До Xcode 15 PDF при архивировании разлетались на три PNG-файла. Теперь их конвертируют в три PDF-файла — объем ресурсов взлетает кратно.
• Используйте PNG для стандартных изображений.
• PDF подходит для тех случаев, когда важна векторная графика и масштабируемость.
Сжимаем изображения
Перед добавлением изображений в проект проверьте их размер. Даже минимальная компрессия может уменьшить вес файлов на 80% без заметной потери качества.
• Попробуйте плагин TinyImage Compressor для Figma.
• В больших командах удобно автоматизировать проверку новых изображений через pre-commit hook. Если размер файла превышает 100 КБ, разработчику предлагается его сжать.
Используйте изображения подходящего размера
Каждый раз, когда вы загружаете изображение, оно занимает память пропорционально своим размерам, а не весу файла.
Например, картинка размером 6000x4000 пикселей займет 96 МБ оперативной памяти, даже если она сжимается до 5 МБ. Если ее выводить в UIImageView размером 300x200 — израсходуете слишком много ресурсов.
• Apple рекомендует использовать технику Downsampling для уменьшения размеров изображения перед выводом:
Создайте кастомный класс UIImageView, который будет предупреждать, если изображение слишком большое для текущей рамки. Так сможете быстрее обнаружить проблему и оптимизировать ее.
Дубли — в помойку
В крупных проектах часто встречаются одинаковые изображения, добавленные разными разработчиками. Это увеличивает размер приложения и создает путаницу в управлении ресурсами.
• Настройте скрипт для автоматического поиска дубликатов на Python.
• Интегрируйте проверку в CI/CD-пайплайн, чтобы регулярно получать отчеты о дубликатах.
Удаляем неиспользуемые изображения
Регулярно удаляйте файлы, которые уже не юзаете.
• FengNiao — опенсорсный инструмент, который автоматически находит неиспользуемые изображения. Его можно настроить на отправку уведомлений в командный чат — так не грохните лишнее.
Эти пять стратегий помогут уменьшить размер приложения и оптимизиваровать его производительность. Убирайте за собой — тогда и клиентам будет комфортнее юзать ваш софт.
👍12🔥8❤4❤🔥1🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Топовые мобильные приложения ИЗБАВЯТ вас от ТРЕВОГИ — блогерша составила свой топ для релакса:
• Block blast — расставляем фигуры в верном порядке и кайфуем.
• I love hue — двигаем блоки по цветам, чтобы получить идеальные и эстетичные градиенты.
• Worrydolls — рассказываем милым виртуальным куклам обо всем, что вас беспокоит.
• Soupsoup magazine — ищем скрытые предметы на картинка под релаксирующую музыку.
Сохраняем и не стрессуем перед началом рабочей недели.
• Block blast — расставляем фигуры в верном порядке и кайфуем.
• I love hue — двигаем блоки по цветам, чтобы получить идеальные и эстетичные градиенты.
• Worrydolls — рассказываем милым виртуальным куклам обо всем, что вас беспокоит.
• Soupsoup magazine — ищем скрытые предметы на картинка под релаксирующую музыку.
Сохраняем и не стрессуем перед началом рабочей недели.
🗿9🔥5👎4❤3😁2❤🔥1👍1
Запретить ВСЕ иностранные мессенджеры хочет Минцифры. Под ограничения попадают работники маркетплейсов, доставок, банков, операторов связи и государственные служащие.
Ловите список иностранных мессенджеров от Роскомнадзора:
• Telegram,
• WhatsApp,
• Discord,
• Microsoft Teams,
• Snapchat,
• Viber,
• WeChat.
Запрет на использование приложений в рабочих целях планируют ввести с 1 сентября 2026 года.
Ловите список иностранных мессенджеров от Роскомнадзора:
• Telegram,
• WhatsApp,
• Discord,
• Microsoft Teams,
• Snapchat,
• Viber,
• WeChat.
Запрет на использование приложений в рабочих целях планируют ввести с 1 сентября 2026 года.
😁30👎18👍8😭3🤪1💊1
Forwarded from Типичный программист
И мерч отправляется...
Наконец-то подводим итоги конкурса. Борьба была жаркая, но с небольшим отрывом побеждает статья «Как пополнить кошелек Steam в 2024 году», и ее автор Виктор получает мерч от Tproger!
В декабре вы тоже можете выиграть наш приз — к мерчу добавим кое-что интересное!
Выбирайте тему из Флудильни и пишите статью месяца!
#tproger #конкурс
Наконец-то подводим итоги конкурса. Борьба была жаркая, но с небольшим отрывом побеждает статья «Как пополнить кошелек Steam в 2024 году», и ее автор Виктор получает мерч от Tproger!
В декабре вы тоже можете выиграть наш приз — к мерчу добавим кое-что интересное!
Выбирайте тему из Флудильни и пишите статью месяца!
#tproger #конкурс
🔥5❤4👍3
Чтобы создавать эффективные и динамичные списки в SwiftUI, можно идти двумя путями: остановиться на базовом функционале или использовать все возможности List. Расскажу о продвинутых приемах работы с List, которые помогут сделать ваши приложения мощнее, интерфейсы — удобнее, а код — более читабельным.
List — это компонент, который отображает данные в виде вертикально прокручиваемого списка. Это мощный инструмент, позволяющий строить интерфейсы с различными уровнями сложности.
Простой пример использования:
struct SimpleListView: View {
let items = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
var body: some View {
List(items, id: \.self) { item in
Text(item)
}
}
}Теперь разберем, как улучшить работу с List с помощью кастомизации, оптимизации и тестирования.
1. Кастомизация строк списка
Как сделать строки в списке более интересными? Добавьте изображения, кнопки и другие элементы интерфейса.
struct CustomRowListView: View {
let items = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
var body: some View {
List(items, id: \.self) { item in
HStack {
Image(systemName: "leaf")
.foregroundColor(.green)
Text(item)
.font(.headline)
Spacer()
Button(action: {
print("\(item) selected")
}) {
Image(systemName: "info.circle")
}
}
}
}
}
Этот подход позволяет добавить интерактивности и визуальной привлекательности вашему приложению.
2. Группировка элементов с помощью секций
Чтобы логически разделить данные, можно использовать заголовки и нижние колонтитулы для секций.
struct SectionedListView: View {
let fruits = ["Apple", "Banana", "Cherry"]
let vegetables = ["Carrot", "Lettuce", "Tomato"]
var body: some View {
List {
Section(header: Text("Fruits")) {
ForEach(fruits, id: \.self) { item in
Text(item)
}
}
Section(header: Text("Vegetables")) {
ForEach(vegetables, id: \.self) { item in
Text(item)
}
}
}
}
}
Секции помогают пользователям легче ориентироваться в данных и находить нужное.
3. Действия по свайпу
C их помощью удалять или редачить элементы списка много проще.
struct SwipeActionListView: View {
@State private var items = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
var body: some View {
List {
ForEach(items, id: \.self) { item in
Text(item)
.swipeActions {
Button(role: .destructive) {
if let index = items.firstIndex(of: item) {
items.remove(at: index)
}
} label: {
Label("Delete", systemImage: "trash")
}
}
}
}
}
}
Эта функциональность особенно удобна для списков задач или приложений с активным взаимодействием с пользователем.
4. Поиск в списке
С этой функцией пользователь быстрее найдет нужные данные.
struct SearchableListView: View {
@State private var searchText = ""
let items = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
var filteredItems: [String] {
if searchText.isEmpty {
return items
} else {
return items.filter { $0.contains(searchText) }
}
}
var body: some View {
List(filteredItems, id: \.self) { item in
Text(item)
}
.searchable(text: $searchText)
}
}
Добавление поиска делает списки более интерактивными и удобными.
Эти техники помогут вам создавать более динамичные и удобные интерфейсы.
Кто будет внедрять фичи — велком в комменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🥰3🤝2❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда уже хотел уволиться, но тебе дали новогоднюю премию.
😁34🔥15👍3
This media is not supported in your browser
VIEW IN TELEGRAM
OpenAI МЕНЯЕТ iPhone с помощью ChatGPT — Сэм Альтман с командой показали все детали звездного коллаба:
• Вместо Siri вопросы можно задавать ChatGPT.
• Нейросеть — НЕ поисковик. Она решает сложные задачи, например, составит идеальные планы на новогодние каникулы.
• ChatGPT генерит картинки за секунду.
• ИИ «кушает» картинки прямо с камеры телефона — сфоткали и залили. Нейронка обработает фото и ответит на любой вопрос.
• ChatGPT также встроили в Mac — нейросеть отслеживает все файлы и программы. Ей можно задавать вопросы.
Нейрообнову iOS 18.2 уже можно скачать — работает она из интерфейса айфона или Мака по ОДНОМУ КЛИКУ.
• Вместо Siri вопросы можно задавать ChatGPT.
• Нейросеть — НЕ поисковик. Она решает сложные задачи, например, составит идеальные планы на новогодние каникулы.
• ChatGPT генерит картинки за секунду.
• ИИ «кушает» картинки прямо с камеры телефона — сфоткали и залили. Нейронка обработает фото и ответит на любой вопрос.
• ChatGPT также встроили в Mac — нейросеть отслеживает все файлы и программы. Ей можно задавать вопросы.
Нейрообнову iOS 18.2 уже можно скачать — работает она из интерфейса айфона или Мака по ОДНОМУ КЛИКУ.
🔥9😱5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️OpenAI РЕЛИЗНУЛА ПУШКУ — голосовой помощник теперь смотрит в камеру мобильного, анализирует обстановку и дает советы.
Как это работает: ChatGPT в ЛАЙВЕ вступает в беседу, подхватывает ее контекст и участвует в ней КАК РАЗУМНЫЙ ЧЕЛОВЕК. Всех ИИ-помощников можете выбрасывать — это революция от Сэма Альтмана прямой сейчас и в вашем кармане!
Смотрите видос и держите себя в руках — нейросеть подключили через мобилку, а она запомнила ВСЕХ присутствующих по внешнему виду и именам, а потом общалась с ними, как давний кореш.
Ай да Альтман, ай да…
Как это работает: ChatGPT в ЛАЙВЕ вступает в беседу, подхватывает ее контекст и участвует в ней КАК РАЗУМНЫЙ ЧЕЛОВЕК. Всех ИИ-помощников можете выбрасывать — это революция от Сэма Альтмана прямой сейчас и в вашем кармане!
Смотрите видос и держите себя в руках — нейросеть подключили через мобилку, а она запомнила ВСЕХ присутствующих по внешнему виду и именам, а потом общалась с ними, как давний кореш.
Ай да Альтман, ай да…
🥱18🔥11🤨4👍1🤔1
Google Play для разрабов из РФ — ВСЁ. Платформа официально разорвала сотрудничество с отечественными прогерами. С 26 декабря все платежи от аккаунтов с российскими банковскими счетами перекроют.
Российские разрабы больше не будут получать доход от продаж приложений — финальную выплату гонорара назначат на 15 января. Далее платные подписки на такие приложения будут недоступны во всём мире.
Press F.
Российские разрабы больше не будут получать доход от продаж приложений — финальную выплату гонорара назначат на 15 января. Далее платные подписки на такие приложения будут недоступны во всём мире.
Press F.
😱28😁18😢9🔥4🤔4👎3😭3
Forwarded from IT Юмор
Джун: *каждый месяц меняет заставку на экране*
Сеньор:
Сеньор:
This media is not supported in your browser
VIEW IN TELEGRAM
👍37😁23🔥9❤4😭3
Самые популярные функции Intellij IDEA для разработчиков — сможете с легкостью избавиться от большей части рутинной работы и бустануть продуктивность В РАЗЫ.
Мегаконцентрат для начинающих и опытных спецов о хокеях, истории изменений и пресетах с кучей примеров и даже площадок для практики.
Взлет продуктивности любого разработчика — здесь.
Мегаконцентрат для начинающих и опытных спецов о хокеях, истории изменений и пресетах с кучей примеров и даже площадок для практики.
Взлет продуктивности любого разработчика — здесь.
😁14👍7🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Главное, что оно работает? Работает ведь?
😁37🤯7👍5🤣2😱1
Генерация эмодзи в iOS 18.2 бесподобна. Юзеры уже нашли способ обойти цензуру.
😁38👍6🔥4❤1
Мобильная разработка
Уменьшаем вес приложения и ускоряем его работу: 5 стратегий управления изображениями в iOS Оптимизация работы с изображениями — задача, которую многие разработчики часто упускают из виду. Но именно эти ресурсы могут существенно влиять на производительность…
По следам поста. Как вы думаете, что сложнее: сделать качественный UI или оптимизировать производительность приложения?
Anonymous Poll
34%
Качественный UI
66%
Оптимизация производительности
👍1
Опенсорс-проекты Яндекса для мобильных разработчиков
userver, Scout и yx_scope — фреймворки с открытым исходным кодом, которые создали разработчики Яндекс Go, Маркета и Техплатформы Екома и Райдтеха Яндекса.
Сразу два из них ориентированы на мобильных разработчиков:
— Scout позволяет безопасно внедрять зависимости в проектах на Kotlin. Входит в топ-3 DI-фреймворков и протестирован на масштабах Яндекс Маркета.
— yx_scope упрощает работу со скоупами во Flutter-приложениях. Обеспечивает максимальную compile-safety без кодогенерации: если код может быть написан, он точно будет работать предсказуемо.
Узнать больше о каждом и изучить документацию можно на dev.go.yandex.
Реклама
userver, Scout и yx_scope — фреймворки с открытым исходным кодом, которые создали разработчики Яндекс Go, Маркета и Техплатформы Екома и Райдтеха Яндекса.
Сразу два из них ориентированы на мобильных разработчиков:
— Scout позволяет безопасно внедрять зависимости в проектах на Kotlin. Входит в топ-3 DI-фреймворков и протестирован на масштабах Яндекс Маркета.
— yx_scope упрощает работу со скоупами во Flutter-приложениях. Обеспечивает максимальную compile-safety без кодогенерации: если код может быть написан, он точно будет работать предсказуемо.
Узнать больше о каждом и изучить документацию можно на dev.go.yandex.
Реклама
👍9💊5❤3
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Гугл ПОМЕР — в ChatGPT добавили полностью БЕСПЛАТНЫЙ поиск по инету ДЛЯ ВСЕХ.
• Разрабы бустанули поиск — теперь он работает быстрее и сам понимает, когда нужно брать инфу из базы данных, а когда искать в сети.
• На компе и на мобилке добавили крутого голосового ассистента.
• Теперь можно заменить Гугл прямо в строке поиска и получить более мощный инструмент — тут.
Смотрели девятую конфу? Завтра обещают пушку для разработчиков — буду освещать!
• Разрабы бустанули поиск — теперь он работает быстрее и сам понимает, когда нужно брать инфу из базы данных, а когда искать в сети.
• На компе и на мобилке добавили крутого голосового ассистента.
• Теперь можно заменить Гугл прямо в строке поиска и получить более мощный инструмент — тут.
Смотрели девятую конфу? Завтра обещают пушку для разработчиков — буду освещать!
🔥19🤷♂6😁6👎2👍1
Размываем задний фон на экране Android-приложения
Раньше в Android для размытия необходимо было отрисовать весь View с заднего фона на bitmap, а затем размыть с помощью RenderScript или OpenGL. Но в Android 12 появился новый API Render Effect, который позволяет проделать эту сложную операцию за несколько строчек кода.
Как работать с Render Effect — здесь.
#android
Раньше в Android для размытия необходимо было отрисовать весь View с заднего фона на bitmap, а затем размыть с помощью RenderScript или OpenGL. Но в Android 12 появился новый API Render Effect, который позволяет проделать эту сложную операцию за несколько строчек кода.
Как работать с Render Effect — здесь.
#android
👍15🔥7🗿4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Идеальный интерфейс на мобилку найден. Распространите.
😁30❤8👎5👍1