Изменение порядка для List и Grid с сохранением в SwiftData
Стюарт Линч выпустил урок по работе со SwiftData. В нём он рассказывает, как реализовать перетаскивание в LazyVGrid с помощью onDrag, onDrop и специального DropDelegate.
📺 А ещё в этом видео можно узнать, как:
😃 iOS Dev
Стюарт Линч выпустил урок по работе со SwiftData. В нём он рассказывает, как реализовать перетаскивание в LazyVGrid с помощью onDrag, onDrop и специального DropDelegate.
📺 А ещё в этом видео можно узнать, как:
• Перейти от локального состояния к@Queryв SwiftData
• Сохранять изменения пользовательского порядка сортировки при перезапуске приложухи
• Добавлять элементы управления для редактирования (и добавления элементов)
• Обрабатывать удаление строк с сохранением порядка сортировки
• Создавать плавные анимации в сетке с помощью перетаскивания
Please open Telegram to view this post
VIEW IN TELEGRAM
4 17🔥4✍2👾1
Новый скилл для дизайна в стиле Apple на основе WWDC-сессий
Эмиль Ковальски отобрал 17 топовых принципов дизайна и анимаций, легко транслируемый и для веба, например.
🛠 У репозитория уже более 7 000 звёзд.
Если хотите огромную подборку скиллов, поставьте👍 .
😃 iOS Dev
Эмиль Ковальски отобрал 17 топовых принципов дизайна и анимаций, легко транслируемый и для веба, например.
🛠 У репозитория уже более 7 000 звёзд.
Если хотите огромную подборку скиллов, поставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
6 62👍10✍2👏1
А сегодня же пятница, а у каждого из нас множество мемов
Предлагаю провести конкурс. С вас - смешной (ну или под тремя слоями постиронии) мем про разработку, можно iOS, можно ИИ, да даже про жизнь.
С меня NFT-подарок в телеге для победителя.
Го в комменты)
😃 iOS Dev
Предлагаю провести конкурс. С вас - смешной (ну или под тремя слоями постиронии) мем про разработку, можно iOS, можно ИИ, да даже про жизнь.
С меня NFT-подарок в телеге для победителя.
Го в комменты)
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁42🤣11 6
This media is not supported in your browser
VIEW IN TELEGRAM
Перетаскивание элементов в SwiftUI в iOS 27
Я уже делился примером с WWDC на счет появившихся опций (официальная дока здесь).
📖 В этой статье можно посмотреть более расширенную инструкцию и возможности работы нового API.
😃 iOS Dev
Я уже делился примером с WWDC на счет появившихся опций (официальная дока здесь).
📖 В этой статье можно посмотреть более расширенную инструкцию и возможности работы нового API.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 12👍6🔥2👾1
⚡ Сайты github, google и apple в РФ недоступны
По данным хабра, Git и вообще доступ к репам без доп сетевых средств сейчас невозможен.
[UPD] Спустя 2 часа ситуация стабилизировалась. РКН при этом заявил, что доступ не ограничивался.
😃 iOS Dev
По данным хабра, Git и вообще доступ к репам без доп сетевых средств сейчас невозможен.
[UPD] Спустя 2 часа ситуация стабилизировалась. РКН при этом заявил, что доступ не ограничивался.
Please open Telegram to view this post
VIEW IN TELEGRAM
😢31😨16😍10👍5🕊4🔥3😱3
This media is not supported in your browser
VIEW IN TELEGRAM
Морфинг текста на SwiftUI в 50 строк кода
Вы же помните, что я просто обожаю необычные эффекты)
Вот как тут, например - с принтером и анимацией отчётов за пару десятков строк кода. Или в стиле tap to cash (до сих пор прилетают запросы где взять туториал).
Так вот, делюсь одним необычным и несложным эффектом - вдохновиться можете где-нибудь здесь.
А по факту у нас два текста кроссфейдятся с анимированным блюром, а с помощью шейдера поверх мы режем альфу по заданному порогу. В общем из-за этого размытые буквы «слипаются» и перетекают друг в друга, как жидкость)
Если разобраться, как такое сделать, можно удивиться, насколько все просто (это аналог feColorMatrix "0 0 0 255 -140" из примера выше):
Ну а если вам все-таки нужен исходный код, вы можете прям переписать его с гифки или не терять время и найти его:⭐️ здесь или 💰 тут.
😃 iOS Dev
Вы же помните, что я просто обожаю необычные эффекты)
Вот как тут, например - с принтером и анимацией отчётов за пару десятков строк кода. Или в стиле tap to cash (до сих пор прилетают запросы где взять туториал).
Так вот, делюсь одним необычным и несложным эффектом - вдохновиться можете где-нибудь здесь.
А по факту у нас два текста кроссфейдятся с анимированным блюром, а с помощью шейдера поверх мы режем альфу по заданному порогу. В общем из-за этого размытые буквы «слипаются» и перетекают друг в друга, как жидкость)
Если разобраться, как такое сделать, можно удивиться, насколько все просто (это аналог feColorMatrix "0 0 0 255 -140" из примера выше):
#include <metal_stdlib>
#include <SwiftUI/SwiftUI_Metal.h>
using namespace metal;
[[stitchable]] half4 textMorphThreshold(float2 position,
SwiftUI::Layer layer,
float4 bounds,
float threshold,
float softness) {
half4 c = layer.sample(position);
float a = float(c.a);
if (a < 1e-4) {
return half4(0.0);
}
float na = smoothstep(threshold - softness, threshold + softness, a);
float3 rgb = float3(c.rgb) / a;
return half4(half3(rgb * na), half(na));
}Ну а если вам все-таки нужен исходный код, вы можете прям переписать его с гифки или не терять время и найти его:
Please open Telegram to view this post
VIEW IN TELEGRAM
4 20😍7😨3🔥2😎1
iOS Dev
⚡️ Приложения VK удалили из российского AppStore Пока что пропали Музыка, Мессенджер, Видео и Дзен. 😃 iOS Dev
⚡Приложения VK и МАХ исчезли из Google Play
Пресс-служба ВК сообщила, что пользователи Android-устройств продолжат получать пуш-уведомления о сообщениях, событиях и звонках в МАХ и приложениях VK.
😃 iOS Dev
Пресс-служба ВК сообщила, что пользователи Android-устройств продолжат получать пуш-уведомления о сообщениях, событиях и звонках в МАХ и приложениях VK.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥57🕊6😢5😈5😨4👍3😡3😴1🤝1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект липкого pull-to-refresh в SwiftUI
📺 На канале Kavsoft выложили полезный и несложный туториал для создания эффекта лоадера с морфингом из Dynamic Island.
📖 А ещё одну демонстрацию похожего стиля можно посмотреть в этом посте.
😃 iOS Dev
📺 На канале Kavsoft выложили полезный и несложный туториал для создания эффекта лоадера с морфингом из Dynamic Island.
📖 А ещё одну демонстрацию похожего стиля можно посмотреть в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
2 44🔥22⚡3✍1👍1🙏1
🫨 Проблемы с AppStore в РФ
По данным хабра магазин приложений AppStore начал нестабильно работать в России. У части пользователей сервисы AppStore не работают вовсе (без специальных сетевых средств).
Похоже, что проблемы с прошлой недели продолжаются.
😃 iOS Dev
По данным хабра магазин приложений AppStore начал нестабильно работать в России. У части пользователей сервисы AppStore не работают вовсе (без специальных сетевых средств).
Похоже, что проблемы с прошлой недели продолжаются.
Please open Telegram to view this post
VIEW IN TELEGRAM
😢28👍12😨9🤯3🕊3👾3🔥2🤩2😍1😡1
Зарплаты IT-специалистов в первой половине 2026: Objective-C всё еще самый доходный
Уровень компенсации для топовых разрабов, знающих Objective-C не только возглавляет таблицу, но ещё и лидер по темпу, +13%.
Ощутимо зарплаты выросли и в Swift (на 7% до 326 000 ₽), котлин тоже прибавил на 5% до 320 000 ₽.
К слову, Авито больше не номер один среди компаний, перехватил эстафетную палочку Райффайзен Банк (+9%, 400 000 - медиана).
В целом, ситуация на рынке такая, что медианная зарплата на IT-рынке сейчас — 191 000.
📖 Остальная аналитика доступна на хабре.
Прошлые обзоры - вот тут.
😃 iOS Dev
Уровень компенсации для топовых разрабов, знающих Objective-C не только возглавляет таблицу, но ещё и лидер по темпу, +13%.
💰 Доход разработчиков на Objective-C: 400 000 рублей.
Ощутимо зарплаты выросли и в Swift (на 7% до 326 000 ₽), котлин тоже прибавил на 5% до 320 000 ₽.
К слову, Авито больше не номер один среди компаний, перехватил эстафетную палочку Райффайзен Банк (+9%, 400 000 - медиана).
В целом, ситуация на рынке такая, что медианная зарплата на IT-рынке сейчас — 191 000.
📖 Остальная аналитика доступна на хабре.
Прошлые обзоры - вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 19🏆8😱5🤯3👍2👾1
🫨 ИИ-модели от OpenAI вышли из-под контроля и устроили хакерскую атаку
Недавно компании OpenAI и Hugging Face (возможно, главный хаб для моделей, его я юзал например, вот тут) столкнулись с беспрецедентным инцидентом кибербезопасности, вызванным автономными действиями ИИ-агентов во время внутреннего тестирования.
Стремясь любой ценой решить поставленную задачу, модели смогли вырваться из песочницы и получить доступ к hugging face.
ИИ самостоятельно обнаружил и проэксплуатировал уязвимость нулевого дня во внутреннем прокси-сервере и использовал украденные учетки.
Службы безопасности Hugging Face сумели оперативно обнаружить аномальную активность и пресечь её после инцидента. OpenAI выпустили пресс-релиз со всеми подробностями.
Берегите свои креды с молоду, как говорится.
😃 iOS Dev
Недавно компании OpenAI и Hugging Face (возможно, главный хаб для моделей, его я юзал например, вот тут) столкнулись с беспрецедентным инцидентом кибербезопасности, вызванным автономными действиями ИИ-агентов во время внутреннего тестирования.
Стремясь любой ценой решить поставленную задачу, модели смогли вырваться из песочницы и получить доступ к hugging face.
ИИ самостоятельно обнаружил и проэксплуатировал уязвимость нулевого дня во внутреннем прокси-сервере и использовал украденные учетки.
Службы безопасности Hugging Face сумели оперативно обнаружить аномальную активность и пресечь её после инцидента. OpenAI выпустили пресс-релиз со всеми подробностями.
Берегите свои креды с молоду, как говорится.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤯19😈6😨5🤓2👍1😢1 1
Мир прототипов
Я пилю приложения уже больше 15 лет и за это время увидел рассвет и закат многих проектов: от первых мессенджеров ВК до яндекс.музыки (последнее обновление никуда не годится) и крупных игровых тайтлов, да и вообще, если мы входим в эпоху, когда игры на плойке будут только в цифре - это уже не звоночек, это чёртов колокол.
Последние пару-тройку лет постоянно слышу: я сделал аналог ноушена, я запустил агрегатор новостей за день, я выпустил собственный браузер.
Ага, конечно.
Оказывается, что там надо немного допилить (процентов 90), скачиваний у ребят миллионы (1-2 в неделю), а графики так и вовсе нарисованы какой-нибудь нейросеткой.
Ну с графиками хотя бы будет повеселее: вы же в курсе, что крупные ии-игроки добавляют паттерны в свои изображения, по которым можно отличить ии-слоп? Если нет, теперь в курсе.
Я к тому, что всё что изменилось - только количество: если раньше плохих приложений было 10, то теперь их будет 1 000 000, но качество не улучшилось ни на йоту.
Лагающего, неповоротливого, одинакового стало ожидаемо намного больше.
Много ума не надо - отдать диз чего угодно клоду/кодексу (нужное подчеркнуть) и на выходе получить прототип.
А потом неделями, месяцами, годами допиливать до хотя бы какого-нибудь приемлемого уровня.
Это разве прорыв?
Даже телега в последнее время не радует. Что уж говорить об остальных.
Если кто-то смотрел ЧМ, то заметили что нейрослоп заполонил и рекламу. Так и представляю, как ушлые маркетологи говорят: ну мы сделаем почти похоже на настоящую, только дешевле, будет почти также. Нет, не почти - это беспросветный, вымученный, чудовищный, вырвиглазный со слабой аурой стиль, за реализацию которой наверняка кто-то получит премию.
Когда с таким количеством ресурсов пользователям отдают это - становится по-настоящему страшно за индустрию.
Страшно, что мы уже живём в мире прототипов.
😃 iOS Dev
Я пилю приложения уже больше 15 лет и за это время увидел рассвет и закат многих проектов: от первых мессенджеров ВК до яндекс.музыки (последнее обновление никуда не годится) и крупных игровых тайтлов, да и вообще, если мы входим в эпоху, когда игры на плойке будут только в цифре - это уже не звоночек, это чёртов колокол.
Последние пару-тройку лет постоянно слышу: я сделал аналог ноушена, я запустил агрегатор новостей за день, я выпустил собственный браузер.
Ага, конечно.
Оказывается, что там надо немного допилить (процентов 90), скачиваний у ребят миллионы (1-2 в неделю), а графики так и вовсе нарисованы какой-нибудь нейросеткой.
Ну с графиками хотя бы будет повеселее: вы же в курсе, что крупные ии-игроки добавляют паттерны в свои изображения, по которым можно отличить ии-слоп? Если нет, теперь в курсе.
Я к тому, что всё что изменилось - только количество: если раньше плохих приложений было 10, то теперь их будет 1 000 000, но качество не улучшилось ни на йоту.
Лагающего, неповоротливого, одинакового стало ожидаемо намного больше.
Много ума не надо - отдать диз чего угодно клоду/кодексу (нужное подчеркнуть) и на выходе получить прототип.
А потом неделями, месяцами, годами допиливать до хотя бы какого-нибудь приемлемого уровня.
Это разве прорыв?
Даже телега в последнее время не радует. Что уж говорить об остальных.
Если кто-то смотрел ЧМ, то заметили что нейрослоп заполонил и рекламу. Так и представляю, как ушлые маркетологи говорят: ну мы сделаем почти похоже на настоящую, только дешевле, будет почти также. Нет, не почти - это беспросветный, вымученный, чудовищный, вырвиглазный со слабой аурой стиль, за реализацию которой наверняка кто-то получит премию.
Когда с таким количеством ресурсов пользователям отдают это - становится по-настоящему страшно за индустрию.
Страшно, что мы уже живём в мире прототипов.
Please open Telegram to view this post
VIEW IN TELEGRAM
9❤🔥57💯21🔥12😢11 6🍓1🆒1
Пересмотр модульной архитектуры iOS-приложения компании JET в 2026 году
Незначительная проблема с одним из UI-компонентов выявила проблемы существующей прежде модели и это стало триггером к пересмотру концепта целиком.
В обновленном подходе каждый компонент классифицируется по своей роли, а не по тому, где он находится в графе зависимостей.
Как следствие, в JET ввели пять категорий. Три из них относятся к собственным компонентам (App, Feature, Foundation); две - к сторонним зависимостям (SDK, Utility).
📖 Про то, что у них получилось, и как работает всё вместе - можно почитать в техническом блоге.
😃 iOS Dev
Незначительная проблема с одним из UI-компонентов выявила проблемы существующей прежде модели и это стало триггером к пересмотру концепта целиком.
В обновленном подходе каждый компонент классифицируется по своей роли, а не по тому, где он находится в графе зависимостей.
Как следствие, в JET ввели пять категорий. Три из них относятся к собственным компонентам (App, Feature, Foundation); две - к сторонним зависимостям (SDK, Utility).
📖 Про то, что у них получилось, и как работает всё вместе - можно почитать в техническом блоге.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 13✍5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
В Яндексе бьют людей?
Добрался до разбора доклада про внедрение AI, в котором руководитель мобильной разработки заявляет на весь зал, что у них бьют людей (не буквально, это важно) за то, что при использовании ИИ-агентов они отдают вопросы при комментах в пулл-реквестах для LLM.
Ну, даже не знаю как это комментировать.
В целом, все прогнозы сбываются. Вроде и продвигают ИИ в массы, а вроде и с оговорками.
😃 iOS Dev
Добрался до разбора доклада про внедрение AI, в котором руководитель мобильной разработки заявляет на весь зал, что у них бьют людей (не буквально, это важно) за то, что при использовании ИИ-агентов они отдают вопросы при комментах в пулл-реквестах для LLM.
Ну, даже не знаю как это комментировать.
В целом, все прогнозы сбываются. Вроде и продвигают ИИ в массы, а вроде и с оговорками.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁35🤣15👍6😱6 3🔥1👏1🤯1
Пасхалки в крашлогах Apple с помощью hexspeak
Помните, когда-то на калькуляторах можно было писать всякие прикольные слова с помощью цифр?
Оказывается, есть специальный термин hexspeak, целая форма правописания с использованием шестнадцатеричных цифр.
Apple не остался в стороне и несколько кодов завершения также написаны в этом стиле:
Да и вообще, рекомендую посмотреть вики, там много любопытных отсылок, есть даже Ace of Base 🎵
😃 iOS Dev
Помните, когда-то на калькуляторах можно было писать всякие прикольные слова с помощью цифр?
Оказывается, есть специальный термин hexspeak, целая форма правописания с использованием шестнадцатеричных цифр.
Apple не остался в стороне и несколько кодов завершения также написаны в этом стиле:
0xdead10cc(dead lock) - приложение удерживает системный ресурс во время работы в фоновом режиме.0x8badf00d(ate bad food) - watchdog убивает за слишком долгую блокировку основного потока при запуске или возобновлении.0xc00010ff(cool off) - используется Apple в отчетах о крашах iOS, когда приложение было закрыто в ответ на термическое событие.0xdeadfa11(dead fall) - юзер принудительно закрыл зависшее приложение.0xbad22222(bad too repeatedly) - VoIP-приложуху крашнул iOS, поскольку оно возобновлялось слишком часто.0xbaaaaaad(baaaaad) - лог представляет собой снимок состояния всей системы, не отчет о краше.0xdeadfeed(dead feed) - краш из-за превышения таймаута при запуске службы.
Да и вообще, рекомендую посмотреть вики, там много любопытных отсылок, есть даже Ace of Base 🎵
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥50 13❤🔥6👍3👏2🎉1😨1👾1
Создание адаптивных немодальных панелей в SwiftUI
📖 В этой статье рассказано, как создать собственные стили для таких панелей, а также описаны решения, которые позволили обеспечить поддержку и потретного, и альбомного режимов.
😃 iOS Dev
📖 В этой статье рассказано, как создать собственные стили для таких панелей, а также описаны решения, которые позволили обеспечить поддержку и потретного, и альбомного режимов.
Please open Telegram to view this post
VIEW IN TELEGRAM
3 18🔥8✍6👍1👏1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Библиотека лоадеров для работы с Foundation Models
Когда-то я делился примерами красоты с помощью математики. Но если подрубить TimelineView, Canvas и немного воображения, сейчас можно создать намного более весёлые и интересные кейсы.
Например, скорее всего если вы отдаете юзерам инфу поэтапно (или генерите изображения), а ваши модельки крутятся долго, и как раз в этот момент совершенно точно что-то нужно показывать.
Для этого можно создать библиотеку компонентов и юзать любую комбинацию, хоть разбивать поэтапно и показывать последовательность, хоть показывать какой-то один из них.
Вот, например, кит, который используется на гифке, которую вы видите:
А целиком примеры уже доступны:⭐️ здесь или 💰 тут.
😃 iOS Dev
Когда-то я делился примерами красоты с помощью математики. Но если подрубить TimelineView, Canvas и немного воображения, сейчас можно создать намного более весёлые и интересные кейсы.
Например, скорее всего если вы отдаете юзерам инфу поэтапно (или генерите изображения), а ваши модельки крутятся долго, и как раз в этот момент совершенно точно что-то нужно показывать.
Для этого можно создать библиотеку компонентов и юзать любую комбинацию, хоть разбивать поэтапно и показывать последовательность, хоть показывать какой-то один из них.
Вот, например, кит, который используется на гифке, которую вы видите:
enum LoaderKit {
static let goldenAngle = Double.pi * (3 - (5.0).squareRoot())
static func fibonacciSphere(_ count: Int) -> [LDVec3] {
guard count > 1 else { return [LDVec3(x: 0, y: 0, z: 0)] }
var pts: [LDVec3] = []
pts.reserveCapacity(count)
for i in 0..<count {
let y = 1 - (Double(i) / Double(count - 1)) * 2 // 1 … -1
let r = (1 - y * y).squareRoot()
let phi = Double(i) * goldenAngle
pts.append(LDVec3(x: cos(phi) * r, y: y, z: sin(phi) * r))
}
return pts
}
static func rotateY(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c + p.z * s, y: p.y, z: -p.x * s + p.z * c)
}
static func rotateX(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x, y: p.y * c - p.z * s, z: p.y * s + p.z * c)
}
static func rotateZ(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c - p.y * s, y: p.x * s + p.y * c, z: p.z)
}
static func dot(_ x: CGFloat, _ y: CGFloat, _ r: CGFloat) -> Path {
Path(ellipseIn: CGRect(x: x - r, y: y - r, width: r * 2, height: r * 2))
}
static func hash(_ i: Int, _ salt: Double = 0) -> Double {
let v = sin(Double(i) * 12.9898 + salt * 78.233 + 0.5) * 43758.5453
return v - v.rounded(.down)
}
static func lerp(_ a: Double, _ b: Double, _ t: Double) -> Double { a + (b - a) * t }
static func smoothstep(_ t: Double) -> Double { let x = min(max(t, 0), 1); return x * x * (3 - 2 * x) }
static func easeOut(_ t: Double) -> Double { 1 - pow(1 - min(max(t, 0), 1), 3) }
}А целиком примеры уже доступны:
Please open Telegram to view this post
VIEW IN TELEGRAM
6😍28🔥9 8👍2👏2👾1
Как в Apple переписывают проекты на Swift
Анализаторы шрифтов обрабатывают данные из ненадежных источников, в результате чего TrueType оказывается уязвимым местом, критически важным с точки зрения безопасности.
Чтобы повысить отказоустойчивость формата на платформах Apple, инженеры приняли решение обновить проект с языка C на Swift.
Перед командой стояла амбициозная задача: обеспечить полную безопасность памяти, сохранить 100% попиксельную совместимость рендеринга и не допустить падения производительности.
Для проверки точности инженеры покрыли код тестами на 99,7% и прогнали 27 миллионов глифов из реальных PDF, сравнивая каждый битмап с эталоном.
📖 В этой статье можно посмотреть, какие трюки они использовали для работы с памятью и каких результатов достигли.
😃 iOS Dev
Анализаторы шрифтов обрабатывают данные из ненадежных источников, в результате чего TrueType оказывается уязвимым местом, критически важным с точки зрения безопасности.
Чтобы повысить отказоустойчивость формата на платформах Apple, инженеры приняли решение обновить проект с языка C на Swift.
Перед командой стояла амбициозная задача: обеспечить полную безопасность памяти, сохранить 100% попиксельную совместимость рендеринга и не допустить падения производительности.
Для проверки точности инженеры покрыли код тестами на 99,7% и прогнали 27 миллионов глифов из реальных PDF, сравнивая каждый битмап с эталоном.
📖 В этой статье можно посмотреть, какие трюки они использовали для работы с памятью и каких результатов достигли.
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥19 14🏆4👍1