Telegram Web Link
This media is not supported in your browser
VIEW IN TELEGRAM
Как связаны все репозитории об iOS-разработке на Github

Оказывается, пользователь с ником @anvaka задумался об этом и создал интерактивную карту.

На ней представлен целый остров под названием Swiftoria, на котором можно найти все репозитории, относящиеся к iOS, а еще кроме этого можно посмотреть на их взаимосвязи.

📖 Об идее и используемых технологиях для создания можно прочесть здесь.

🌐 А вот тут доступна интерактивная версия.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация эффекта адаптивного блюра

Многие пользователи iOS обращали внимание на необычный стиль блюра на системной шторке.

Оказывается, его можно повторить с помощью приватного апи, используя CAFilter.

🛠Janum Trivedi, автор опенсорсного Wave, поделился тонкостями реализации в своем репозитории.

В комментариях к посту заметили, что это можно сделать и комбинацией SceneKit + Metal, и с помощью visual effect view.

Кстати, в своей реализации я использовал маску для градиентного блюра.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
О чистоте кода и японских урнах

Даже плохой код может работать. Но с течением времени скорость разработки начнет снижаться и в какой-то момент может потребоваться активизация огромных ресурсов для того, чтобы все это починить и вернуться к нормальным темпам.

🇯🇵 Находясь в Японии, многие туристы обратят внимание на невероятную чистоту, а еще на практически полное отсутствие урн на улицах, и это неспроста.

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

☕️ Например, в «Книге о чае» Окакуры Какузо, классическом труде о чайной церемонии есть такая цитата «…всё абсолютно чисто. Ни пылинки в самом темном углу. Потому что если найти пылинку, то хозяин — не чайный мастер».

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

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

А куда будет склоняться чаша весов, можно определить в будущих спринтах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Performance Trace Profiles: отладка проблем производительности, которые сложно воспроизвести

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

Среди них: фризы пользовательского интерфейса, проблемы с многопоточностью/параллелизм, проблемы ЦП/памяти и так далее.

Как следует из названия, Performance Trace Profiles предоставляют возможности отслеживания производительности вашего устройства.

Более того, с их помощью можно запускать системную трассировку всего, что в данный момент работает на телефоне, которую вы можете позже извлечь и открыть в «Инструментах».

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

Но будьте осторожны, ведь трассировка будет фиксировать и избыточную информацию.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Топ-5 нововведений в Xcode 15, которые могут вас удивить

Так сложилось, что во время самого WWDC я был в самолёте и по определённым причинам не смог провести трансляцию, как в прошлый раз, но!

🤩 Вот пять новинок в Xcode, которые некоторые даже смогли предсказать:

1️⃣ Можно использовать previews в UIKit (и AppKit!).
До этого существовали некоторые способы, но теперь нативно.

2️⃣ Представлена SwiftData (многие давно ждали/верили/надеялись, но решили выкатить сейчас, анонс уже здесь).

3️⃣ Можно оставлять закладки в коде! Пока, задисейбленные брейпоинты?

4️⃣ Теперь доступна новая система макросов, которую можно использовать для уменьшения бойлерплейт-кода и улучшения API.

5️⃣ Неактивный код в блоках #if…#endif теперь будет отображаться с тенью. Очень полезно, когда выбран не тот таргет. Можно вернуть, как было в Text Editing > Display.

😎 Бонус!

Теперь доступно действие Archive, даже если выбран симулятор. Наверняка каждый хоть раз, да забывал переключать симулятор для архива во всех 14 предыдущих версиях Xcode.

😃 iOS Devбудем следить за новинками вместе (и копить на лыжную маску amazing хэдсет за $3 500)
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Статус-бар в iOS 17 теперь по умолчанию меняет стиль в зависимости от контента!

Сейчас стиль статус-бара определяет приложение (или контроллер). Но есть случаи, когда пользовательский контент может быть динамическим, и тогда изменение стиля становится непростой задачей.

Теперь, в iOS 17, стиль по умолчанию постоянно подстраивается под содержимое приложения и автоматически меняется с тёмного на светлый (и наоборот) для поддержания контраста.

🤩 И теперь даже возможно, что статус-бар может быть наполовину чёрным, а наполовину белым!

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Palette Menus в iOS 17: доступен новый тип меню как в Finder, Books и Mail

Palettes (или проще палитры) представляют собой ряд элементов меню, обычно используемых для выбора из заданного набора.

Этот элемент в Apple используют приложении Books на iOS или в Mail и Finder на Mac. Теперь же они доступны и в UIKit.

Чтобы превратить любое меню в палитру, просто добавьте .displayAsPalette к его параметрам, как показано ниже.

UIMenu(options: [.displayInline, .displayAsPalette], children: [ ... ])

Выбор будет отмечен соответствующим индикатором на основе предоставленного изображения.

Если все элементы в палитре используют монохромные символы SF или шаблонные изображения, выбранный элемент окрашивается цветом оттенка приложения.

👩‍🎓 Также можно задать свой стиль индикатора выбора, используя selectedImage в протоколе UIMenuLeaf.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️Push Notifications Console — тестовые пуши, логи и валидация в новом инструменте Apple

Новая консоль push-уведомлений упростит отправку тестовых уведомлений на устройства Apple через службу Apple Push Notification (APN).

Есть доступ к логам, которые предоставляют информацию о процессе доставки, а также дополнительные инструменты для создания и проверки токенов. Что доступно:

🔘 Отправка уведомлений. Есть опция выбора приоритета доставки, тип (от alert до voip) и apns-expiration.

🔘 Логи. Время доставки зависит от различных факторов, а именно: мощности устройства, подключения устройства, приоритета push-уведомления, состояния приложения на устройстве и других.

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

В payload можно задать title, subtitle, body, launch-image и ряд других параметров.

🧑‍💻 Посмотреть и попробовать можно здесь.

😃 iOS Dev — помню времена, когда использовал Parse.
Please open Telegram to view this post
VIEW IN TELEGRAM
Новое меню для быстрых действий в Xcode 15

Xcode меняется в лучшую сторону, например, добавили закладки в коде и систему макросов, которую ещё будем разбирать, но есть менее заметные (хотя и довольно полезные) обновления.

1️⃣ Для вызова нужно использовать шорткат Shift ⇧ + CMD ⌘ + A

2️⃣ Затем достаточно начать печатать название действия, которое вы хотите использовать.

👍 Из плюсов: можно сразу же выбрать любую опцию рефакторинга, что потенциально ускорит написание кода.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😂 Как должно выглядеть настоящее Perfomance Review!

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

Например, Крэйг Федериги вчера показал свои скиллы с помощью мощного гитарного соло, чем привёл в восторг всех присутствующих.

😎 А вы отдыхаете после релиза?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Новая опция в Xcode 15: форматирование кода на несколько строк

🤩 Спустя годы после того, как эту функцию запрашивали и после появления довольно популярного репозитория на Github Apple наконец выкатили фичу для разбиения кода на несколько строк. Разве не amazing!

Правда, пока нет шортката, но ведь и Xcode пока только в бете.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новые опции дистрибуции в Xcode 15: отправка в App Store и TestFlight в один клик

Выше я поделился несколькими обновлениями, но это далеко не всё!

🔨 Например, теперь даже без использования инструментов CI, можно заливать приложение буквально в один клик, используя новые встроенные опции.

Варианты, которые были ранее, доступны во вкладке Custom.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Печальная новость для инди-разработчиков, Apollo для Reddit остановят 30 июня и вот почему это плохо

К крутым продуктам и их создателям можно относиться по-разному, но они двигают всю индустрию вперёд.

Один из таких людей — Кристиан Селиг. Как минимум дважды я писал о его идеях и в нашем канале: посмотрите ещё раз на эту милоту или на более серьёзный материал о работе с жестами.

На протяжении последних восьми лет он работал над клиентом для Reddit, которым пользуется даже Крейг Федериги (не шутка, на WWDC23 были другие упоминания).

Так вот, Reddit выкатил новые условия использования API, которые предполагают траты в размере 20 млн долларов в год для этого приложения. И хоть Аполло используют миллионы, платных юзеров около 50 000. Математически это красная зона для счёта в первый же месяц.

В этой истории последняя страница пока не перевёрнута, но очевидно следующее:

1️⃣ Когда вы полагаетесь на API от крупной корпорации, будьте готовы к таким поворотам. Примеры твиттера, ютуба и других говорят, что это тенденция, а не совпадение. Для корпораций потенциальная стоимость одного пользователя куда выше, чем для инди-разработчиков, так как они рассчитывают на больший доход. И если оценить ситуацию с холодной головой, это справедливо.

2️⃣ У большинства нет таких связей, как у Кристиана (бывшего интерна Applе со связями в яблочной корпорации). Поэтому не нужно думать, что ваш первый (или даже двадцатый) пет-проект обязательно должен получить Editor's choice.

3️⃣ Восемь лет работать над одним проектом — вызов. И в компании, и над своими проектами. Чтобы не выгореть, нужно любить своё дело, и даже при этом, иногда нужно находить время на то, чтобы отвлекаться.

У Кристиана всё будет хорошо. Есть невероятная поддержка и от пользователей, и от влиятельных персон, поэтому даже в случае шатдауна Аполло, с ресурсами на разработку всё будет в порядке.

И кое-что ещё. Если вам по-настоящему нравится какое-то приложение (необязательно Apollo), то потратьте две минуты на отзыв, а если позволяют финансы, то на премиум внутри. Для инди-разработчиков это не только мотивация, но, что более важно, сигнал о том, что их работа кому-то помогла.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Новые анимации для ScrollView в iOS 17: ScrollTransitionConfiguration в SwiftUI

Красота и относительная лёгкость реализации анимаций в SwiftUI не может не привлекать, как например в этом примере.

С каждой новой версией количество опций для добавления эффектов только увеличивается, и это радует.

📺 В этом видео с WWDC рассказывается об изменениях в к Scroll View и приводятся примеры кода.

📖 Вот тут уже есть необходимая документация.

🔗 А в этом примере от Meng To можно посмотреть на одну из возможных реализаций.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Воспроизведение эффекта анимации NameDrop с использованием SKShader

Одной из самых эффектных фич в iOS 17 стала NameDrop (для шаринга контактов). Многие обратили внимание на необычную анимацию, похожую на водную рябь.

А энтузиасты даже смогли повторить, используя SKShader (пример на гифке).

🛠 Вот здесь, кстати, исходный код, в котором вы можете посмотреть на реализацию и использовать в своих проектах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новая опция в Xcode 15: заглушки для пустых состояний

Одно из любопытных нововведений в Xcode — нативное добавление заглушек для обработки empty states (когда у вас не пришёл ответ от сервера, или, например, просто пустой результат поиска).

Ключ для использования — UIContentUnavailableConfiguration (больше инфы в официальной доке).

Можно создавать заглушки одного из трёх типов: empty, loading, search.

🧑‍💻 Кстати, бонусом доступна реализация конфига в том числе и на SwiftUI, а для использования можно задействовать UIHostingConfiguration там, где удобно.

А вот тут пример использования в реальном проекте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый Resumable upload protocol: пауза/продолжение загрузки данных на сервер

Ранее нам были доступны методы вроде downloadTaskWithResumeData (аж с седьмой оси), но для того, чтобы реализовать возобновляемый аплоад, приходилось писать свои решения (или использовать либы вроде TUS и прочих).

Парадоксально, но нативной поддержки такого важного и полезного метода до сих пор нет.

🥳 Зато в 17 оси появится uploadTaskWithResumeData.

Конечно, сервер должен уметь поддерживать такой тип загрузок, и скорее всего, ваши коллеги уже слышали о SwiftNIO.

📺 А в этом видео можно узнать о дополнительных требованиях к серверу и посмотреть на пример клиентского кода (он интуитивен).

📖 Документация по новому методу доступна на сайте Apple.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Шейдеры в Xcode 15: возможности, примеры кода и математика

Shader — это референс на функцию в либе Metal, и в этом году появилось несколько новых модификаторов для его использования внутри SwiftUI. Пожалуй, основной недостаток — его доступность с iOS 17, в отличие от примера выше.

📖 В большой обзорной статье приводятся примеры кода, интеграции и работы с разными типами шейдеров.

🧑‍💻 А для тех, кто хочет прокачать свои знания — есть целая спецификация по созданию собственных шейдеров от Apple, Metal Shading Language (сокращённо, MSL).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзорный пост по всем нововведениям на WWDC23 для iOS Dev

WWDC подошла к концу, но для нас всё только начинается.

Новые девайсы будут представлены только осенью, а до тех пор в проектах можно попробовать внедрить что-то из нижеперечисленного.

Технологии

🔘 8 новых фреймворков — описание, детали и требования.

🔘 Представленные технологии в формате кратких хайлайтов от Apple.

🔘 Топ-5 нововведений в Xcode 15 и все релизноты бета-версии.

Код и примеры

🔗 Проекты, показанные во время презентации, отобранные Apple.

🔗 SwiftData — туториал с примерами от Kodeco.

🔗 Адаптация проекта с Core Data к новой SwiftData.

🔗 Серии вопросов и ответов, связанных с SwiftData и CoreData.

Новые инструменты

🔨 Push notifications console.

Что точно пригодится

📖 Новый метод для контроллера viewIsAppearing.

📖 Изменения в локализации проектов.

Какие видео можно посмотреть в первую очередь

📺 Изменения в UIKit.

📺 Анализ зависаний с помощью инструментов.

📺 Разбор структурированного параллелизма (не только основы).

📺 Новые возможности дебага, и для чего нужен dwim-print.

📺 Swift-макросы и как они могут упростить написание сложных функций.

Кроме этого, вы всегда можете прочесть об основных изменениях вот с этого поста.

👩‍🎓 А я, в свою очередь, постараюсь оперативно сообщать о важном здесь, в канале:

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Необычный эффект увеличительного стекла с использованием Metal в iOS 17

🤩 Уже знакомый нам Janum Trivedi применил интересный подход к тому, чтобы повторить эффект лупы, который вы можете увидеть на гифке.

Для этого он использовал Metal, а также свою библиотеку Wave, о которой можно прочитать здесь.

🛠 Кстати, решение опенсорсное, а пример кода доступен на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/02 14:27:25
Back to Top
HTML Embed Code: