This media is not supported in your browser
VIEW IN TELEGRAM
Отладка приложения при ограниченном доступе
Bryce Bostwick, исследования которого часто можно встретить в нашем канале (про анимированную иконку приложения, например), поделился любопытным взглядом на возможность отладки внешнего приложения.
Вводные данные приложения:
1. Блокирует подключение дебаггера.
2. Закрывается, если вы пытаетесь внедрить какой-либо код.
3. Крашит телефон, если на нём есть джейлбрейк.
📖 Что из этого получилось, можно посмотреть в этом видео или прочитать в статье.
Будет полезно разработчикам защищённых приложений (в том числе, чтобы проверить ещё раз, готов ли ваш продукт к таким сценариям).
😃 iOS Dev
Bryce Bostwick, исследования которого часто можно встретить в нашем канале (про анимированную иконку приложения, например), поделился любопытным взглядом на возможность отладки внешнего приложения.
Вводные данные приложения:
1. Блокирует подключение дебаггера.
2. Закрывается, если вы пытаетесь внедрить какой-либо код.
3. Крашит телефон, если на нём есть джейлбрейк.
📖 Что из этого получилось, можно посмотреть в этом видео или прочитать в статье.
Будет полезно разработчикам защищённых приложений (в том числе, чтобы проверить ещё раз, готов ли ваш продукт к таким сценариям).
Please open Telegram to view this post
VIEW IN TELEGRAM
19 13👍9👌5✍3🎉3❤🔥1⚡1🔥1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Эксперименты с Metal - шейдер, имитирующий портал
Под капотом используется комбинация шума + emission shader.
📖 У celestialmaze в твиттере можно чекнуть, какие параметры можно заюзать для дальнейшей кастомизации.
Периодически я пробую силы в адаптации известных решений (на любом языке программирования или с помощью формул) на Swift.
Например:
🔗 Warp-эффект на metal-шейдере
🔗 Beauty infinite loop
🔗 Огненный шейдер
Код всех реализаций есть💰 тут и ⭐️ тут.
😃 iOS Dev
Под капотом используется комбинация шума + emission shader.
📖 У celestialmaze в твиттере можно чекнуть, какие параметры можно заюзать для дальнейшей кастомизации.
Периодически я пробую силы в адаптации известных решений (на любом языке программирования или с помощью формул) на Swift.
Например:
Код всех реализаций есть
Please open Telegram to view this post
VIEW IN TELEGRAM
25 32👍13⚡7🔥3☃2💯2 2👏1🎉1👌1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Исследование создания анимаций в Spotify
📖 В техническом блоге можно узнать, как именно генерировались анимации итогов года за последние несколько лет.
В частности, почему от стандартной комбинации трансформа+bezier path они перешли на сочетание традиционных анимаций вместе с Lottie.
🎶 Например, для «Ауры аудио» пару лет назад сопоставлялась частота прослушивания того или иного жанра с интенсивностью цвета. В другом примере базой анимации служили координаты на карте, которые отражают местоположение предпочтений пользователя в прослушивании.
А начиная с 2023 года разработчики учли сочетание нативной анимации и Lottie. Нативная анимация отвечает за визуализацию данных и взаимодействие, а Lottie — за визуализацию брендов и анимацию с большим количеством кейфреймов, не требующих дополнительной параметризации.
😃 iOS Dev
📖 В техническом блоге можно узнать, как именно генерировались анимации итогов года за последние несколько лет.
В частности, почему от стандартной комбинации трансформа+bezier path они перешли на сочетание традиционных анимаций вместе с Lottie.
А начиная с 2023 года разработчики учли сочетание нативной анимации и Lottie. Нативная анимация отвечает за визуализацию данных и взаимодействие, а Lottie — за визуализацию брендов и анимацию с большим количеством кейфреймов, не требующих дополнительной параметризации.
Please open Telegram to view this post
VIEW IN TELEGRAM
16 16👍7🔥4⚡3👌2✍1👏1🎉1💯1
Глоссарий по Swift Concurrency
Matt Massicotte, выпуск с которым был в нашем канале, решил собрать в одном месте все самые важные термины Swift Concurrency.
📖 По каждому из них (не только по
А проверить себя на серии вопросов и узнать, какие могут быть подводные камни при использовании, вы можете💰 в базе и ⭐️ телеграме.
😃 iOS Dev
Matt Massicotte, выпуск с которым был в нашем канале, решил собрать в одном месте все самые важные термины Swift Concurrency.
📖 По каждому из них (не только по
actor/async
, но и, например, по @unchecked
, for-await
) можно получить небольшую справку, что это такое, для чего используется и в каком пропозале он был реализован.А проверить себя на серии вопросов и узнать, какие могут быть подводные камни при использовании, вы можете
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍17❤🔥5 5👏3💯3✍1🔥1🎉1👌1🎄1
Понимание и повторение
Если решать одно и то же на протяжении многих дней в надежде на то, что область знаний изменится, то максимум, чего можно достигнуть — повторения теглайна из третьей части Far Cry.
Навык понимания, а не повторения увиденного — один из ценнейших не только в разработке, но и в жизни. Можно прорешать 1000 задач на одну тему, но если не научиться видеть паттерны применения, то, к глубочайшему сожалению, роста как специалиста не произойдёт.
Поэтому мне импонирует стиль профессионалов, стремящихся к practice first: стоит отталкиваться от задачи, от целей, от необходимости оптимизации, и только после этого следовать за алгоритмической составляющей.
Понимание, для чего нужно ускорить тот или иной кусок кода выгодно отличает любого специалиста.
На собеседованиях, которые мне доверяют проводить в компании, я часто слышу от кандидатов, что процессы отличаются в лучшую сторону. Чаще всего я не спрашиваю глубоко теорию, вместо этого, диалог формируется на основе уже решенного тестового задания и ветвится в сторону тех вещей, которые пригодятся в работе. Это совсем не означает, что знание теории не нужно, скорее наоборот, осознание человеком того, какая часть того или иного тестового задания не является достаточно быстрой или архитектурно выверенной, показывает возможность дальнейшего развития.
Важнее знать, почему стоит оптимизировать раздел, в котором происходят сотни обновлений в секунду, вместо того, чтобы сосредоточить усилия нескольких человек, а иногда и команд на вещах, тепловая карта которых не меняется на протяжении десятков версий. Это относится к проектам любого уровня и любой внутренней структуры.
Парадоксально, но хотя мы работаем по спринтам, процесс создания больших проектов — марафон. И хотя Фидиппид в итоге донёс благую весть до афинян, по одной из легенд, для этого он пожертвовал собой из-за слишком высокой загрузки. Именно поэтому важно разобрать задачу и понимать, на чём необходимо расставить акценты, чтобы справиться с дистанцией любого уровня.
Главное помнить, что правильно заданный вопрос это уже половина решения задачи.
😃 iOS Dev
Если решать одно и то же на протяжении многих дней в надежде на то, что область знаний изменится, то максимум, чего можно достигнуть — повторения теглайна из третьей части Far Cry.
Навык понимания, а не повторения увиденного — один из ценнейших не только в разработке, но и в жизни. Можно прорешать 1000 задач на одну тему, но если не научиться видеть паттерны применения, то, к глубочайшему сожалению, роста как специалиста не произойдёт.
Поэтому мне импонирует стиль профессионалов, стремящихся к practice first: стоит отталкиваться от задачи, от целей, от необходимости оптимизации, и только после этого следовать за алгоритмической составляющей.
Понимание, для чего нужно ускорить тот или иной кусок кода выгодно отличает любого специалиста.
На собеседованиях, которые мне доверяют проводить в компании, я часто слышу от кандидатов, что процессы отличаются в лучшую сторону. Чаще всего я не спрашиваю глубоко теорию, вместо этого, диалог формируется на основе уже решенного тестового задания и ветвится в сторону тех вещей, которые пригодятся в работе. Это совсем не означает, что знание теории не нужно, скорее наоборот, осознание человеком того, какая часть того или иного тестового задания не является достаточно быстрой или архитектурно выверенной, показывает возможность дальнейшего развития.
Важнее знать, почему стоит оптимизировать раздел, в котором происходят сотни обновлений в секунду, вместо того, чтобы сосредоточить усилия нескольких человек, а иногда и команд на вещах, тепловая карта которых не меняется на протяжении десятков версий. Это относится к проектам любого уровня и любой внутренней структуры.
Парадоксально, но хотя мы работаем по спринтам, процесс создания больших проектов — марафон. И хотя Фидиппид в итоге донёс благую весть до афинян, по одной из легенд, для этого он пожертвовал собой из-за слишком высокой загрузки. Именно поэтому важно разобрать задачу и понимать, на чём необходимо расставить акценты, чтобы справиться с дистанцией любого уровня.
Главное помнить, что правильно заданный вопрос это уже половина решения задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
32🔥20💯13 7👍6❤🔥3🤝2☃1👏1🎉1
А поделитесь книгами в комментариях, которые на ваш взгляд, необходимы для разработчика 🧠
Не только же банду четырёх читать.
При этом совсем необязательно это должна быть книга, напрямую связанная с IT (кругозор формируется благодаря широте взглядов).
Не только же банду четырёх читать.
При этом совсем необязательно это должна быть книга, напрямую связанная с IT (кругозор формируется благодаря широте взглядов).
8❤🔥12💯9✍6 3👍2🔥1👏1🎉1
SwiftUI и Firebase: создание приложения «Напоминания»
📖 В этом пошаговом туториале показано, как с нуля можно создать to-do приложение, используя SwiftUI и возможности Firebase.
Обучение разбито на следующие разделы:
1️⃣ Создание простого интерфейса (и пример MVVM-архитектуры)
2️⃣ Создание кастомизируемых компонентов
3️⃣ Подключение и работа с Firebase (настройка проекта и локальное тестирование)
4️⃣ Хранение данных в Cloud (настройка, обновление и удаление данных)
5️⃣ Dependency Injection (для разных частей приложения)
6️⃣ Аутентификация пользователей (анонимные аккаунты, регистрация через Apple и линк аккаунтов)
😃 iOS Dev
📖 В этом пошаговом туториале показано, как с нуля можно создать to-do приложение, используя SwiftUI и возможности Firebase.
Обучение разбито на следующие разделы:
1️⃣ Создание простого интерфейса (и пример MVVM-архитектуры)
2️⃣ Создание кастомизируемых компонентов
3️⃣ Подключение и работа с Firebase (настройка проекта и локальное тестирование)
4️⃣ Хранение данных в Cloud (настройка, обновление и удаление данных)
5️⃣ Dependency Injection (для разных частей приложения)
6️⃣ Аутентификация пользователей (анонимные аккаунты, регистрация через Apple и линк аккаунтов)
Please open Telegram to view this post
VIEW IN TELEGRAM
11 19✍12👍9🔥3💯2👏1🎄1
The System Design Primer — огромная коллекция ресурсов для создания сложных систем
Навык масштабируемых проектов приходит с опытом. Пожалуй, это одна из тех частей, которую без практики прокачать необычайно сложно.
Даже на собеседованиях, если вас просят спроектировать что-то, обычно не ожидают разбора структуры проекта на несколько уровней вглубь (либо это будет очень долгое собеседование, а не приключение на 15 минут).
Нашёл замечательный опенсорсный репозиторий (288 000 звёзд), в котором комьюнити не только разбирает сложные (и популярные) приложения, но и делится примерами для проектирования таких систем.
🛠 Фантастический ресурс на GitHub.
😃 iOS Dev
Навык масштабируемых проектов приходит с опытом. Пожалуй, это одна из тех частей, которую без практики прокачать необычайно сложно.
Даже на собеседованиях, если вас просят спроектировать что-то, обычно не ожидают разбора структуры проекта на несколько уровней вглубь (либо это будет очень долгое собеседование, а не приключение на 15 минут).
Нашёл замечательный опенсорсный репозиторий (288 000 звёзд), в котором комьюнити не только разбирает сложные (и популярные) приложения, но и делится примерами для проектирования таких систем.
🛠 Фантастический ресурс на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 19👍12✍4💯3☃2❤🔥2🔥2🎄2👏1
📖 Apple открыла исходный код swift-build — движка, используемого в Xcode! По сути, с его помощью выполняется сборка проектов и пакетов Swift, а также работает Swift Playground.
Если проще, теперь любая компания может создать свой GUI в качестве замены стандартному Xcode.
Ждём возобновления разработки AppCode?
P.S. Уже выкатили анонс roadmap (и приглашение поучаствовать в развитии) на официальном сайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
41🔥110👍17 12🎉5👏4💯2☃1🤩1
Value type и Reference type в Swift
Вопросы о value type/reference type могут быть, пожалуй, в 90% собеседований. Несмотря на то, что на уровне senior-разработчика я их не встречал, но в разных компаниях как известно разные подходы.
Типы в Swift можно разделить на две категории: первая - «value type», где каждый экземпляр хранит уникальную копию своих данных, обычно определяемую как
Вторая - «reference type», где экземпляры разделяют одну копию данных, а сам тип обычно определяется как класс.
В закрытой базе я постарался разобрать несколько неочевидных моментов, в том числе к чему же относится
Посмотреть на вопросы можно💰 тут и ⭐️ тут.
😃 iOS Dev
Вопросы о value type/reference type могут быть, пожалуй, в 90% собеседований. Несмотря на то, что на уровне senior-разработчика я их не встречал, но в разных компаниях как известно разные подходы.
Типы в Swift можно разделить на две категории: первая - «value type», где каждый экземпляр хранит уникальную копию своих данных, обычно определяемую как
struct
, enum
или tuple
. Вторая - «reference type», где экземпляры разделяют одну копию данных, а сам тип обычно определяется как класс.
В закрытой базе я постарался разобрать несколько неочевидных моментов, в том числе к чему же относится
decimal
(как показывает практика, с этим также бывают вопросы) и indirect enum
, а также добавил подборку вопросов для закрепления.Посмотреть на вопросы можно
А ещё вас ожидает:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки
Please open Telegram to view this post
VIEW IN TELEGRAM
9 15👍9✍3🔥2💯2⚡1🏆1🤗1🎄1🆒1
Для чего нужны Preferences в SwiftUI — разбор примеров
Чаще всего для реализации двусторонней привязки используется
В большинстве случаев это не является проблемой, но может привести к негативным последствиям в некоторых ситуациях.
ℹ️ Например, если нужно передать состояние глубоко вниз по иерархии, может возникнуть антипаттерн prop drilling.
В таком случае могут помочь Preferences.
📖 В этой статье на реальных примерах разбираются преимущества такого подхода, а также возможные сложности при использовании Swift 6.
😃 iOS Dev
Чаще всего для реализации двусторонней привязки используется
@State
и @Binding
(для родительской и дочерней вью). В большинстве случаев это не является проблемой, но может привести к негативным последствиям в некоторых ситуациях.
ℹ️ Например, если нужно передать состояние глубоко вниз по иерархии, может возникнуть антипаттерн prop drilling.
В таком случае могут помочь Preferences.
📖 В этой статье на реальных примерах разбираются преимущества такого подхода, а также возможные сложности при использовании Swift 6.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 10👍7✍4💯3❤🔥1⚡1🔥1👏1
Основы работы с Core Image
В нём есть целый ряд высокопроизводительных инструментов для фото и видео (от применения фильтров до выполнения сложных операций).
📖 В этом материале можно познакомиться с основами Core Image, проследить за эволюцией фреймворка и посмотреть на примеры работы.
Кстати, в канале можно почитать про 5 способов изменить размер изображения (в том числе с помощью Core Image).
😃 iOS Dev
Core Image
это мощный фреймворк для анализа изображений и их дальнейшей обработки. В нём есть целый ряд высокопроизводительных инструментов для фото и видео (от применения фильтров до выполнения сложных операций).
📖 В этом материале можно познакомиться с основами Core Image, проследить за эволюцией фреймворка и посмотреть на примеры работы.
Кстати, в канале можно почитать про 5 способов изменить размер изображения (в том числе с помощью Core Image).
Please open Telegram to view this post
VIEW IN TELEGRAM
6 12✍7👍5💯4🔥3👏1🎉1
Реализация динамического градиента на основе среднего цвета изображения
Грамотное использование градиентов — сложная задача и для дизайнеров, и для разработчиков.
📖 В этом материале можно посмотреть на один из таких примеров.
🛠 Код проекта доступен здесь.
А ранее в канале можно было увидеть ещё один пример для плавного перехода между цветами.
😃 iOS Dev
Грамотное использование градиентов — сложная задача и для дизайнеров, и для разработчиков.
📖 В этом материале можно посмотреть на один из таких примеров.
🛠 Код проекта доступен здесь.
А ранее в канале можно было увидеть ещё один пример для плавного перехода между цветами.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 17👍9✍4🔥4💯2🎄2☃1👏1🤯1🏆1
Локализация iOS-приложения: советы, хитрости и лучшие практики
Читатель нашего канала попросил поделиться статьёй, в которой он разбирает особенности локализации (плюрализация,
Сергей работал со многими командами и участвовал в создании нескольких мультиязычных проектов для разных аудиторий и отраслей.
📖 Поэтому рекомендую взглянуть на этот материал, и, возможно, сохранить себе некоторые советы.
Напомню, что здесь можно почитать про механику работы со String Catalogs.
😃 iOS Dev
Читатель нашего канала попросил поделиться статьёй, в которой он разбирает особенности локализации (плюрализация,
canInflect
и форматирование разных типов данных).Сергей работал со многими командами и участвовал в создании нескольких мультиязычных проектов для разных аудиторий и отраслей.
📖 Поэтому рекомендую взглянуть на этот материал, и, возможно, сохранить себе некоторые советы.
Напомню, что здесь можно почитать про механику работы со String Catalogs.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 16👍11🔥4👌4✍3👏1💯1🤝1🆒1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Создаём эффекты как в Apple Invites
Буквально неделю назад вышло новое приложение от Apple. Если вы задумывались, как можно реализовать анимацию с параллаксом при скролле (или вновь узнать немного больше о шейдерах), то с радостью делюсь проектом с официального сайта.
📖 В этом проекте можно посмотреть на разные эффекты при скролле, работу с цветами, кастомные переходы и расширенные эффекты с помощью шейдеров и рендеринга текста.
📺 Реализация вдохновлена этой сессией с WWDC24.
Кстати, в базе есть примеры более сложных шейдеров (💰 тут и ⭐️ тут).
😃 iOS Dev
Буквально неделю назад вышло новое приложение от Apple. Если вы задумывались, как можно реализовать анимацию с параллаксом при скролле (или вновь узнать немного больше о шейдерах), то с радостью делюсь проектом с официального сайта.
📖 В этом проекте можно посмотреть на разные эффекты при скролле, работу с цветами, кастомные переходы и расширенные эффекты с помощью шейдеров и рендеринга текста.
📺 Реализация вдохновлена этой сессией с WWDC24.
Кстати, в базе есть примеры более сложных шейдеров (
Please open Telegram to view this post
VIEW IN TELEGRAM
9 29👍17🔥11❤🔥3👌2🎄2✍1☃1🎉1
Умение доносить свои мысли
Печально наблюдать, как довольно часто в современном IT тарабарщину принимают за высокий скилл, а набор противоречащих друг другу заявлений за истину.
Я вижу, как посты редактируются после первого же комментария, как люди в публичном поле, имеющие приличный вес в сообществе, меняют их, удаляют и как ни в чём не бывало считают, что вводить тысячи читателей в заблуждение — это ок.
Поверьте, всегда можно отличить практика от того, кто это имитирует.
Всегда можно отличить знание от повторения.
Практикуйтесь в технической части. Решайте сложные задачи.
Формируйте собственное мнение.
😃 iOS Dev
Печально наблюдать, как довольно часто в современном IT тарабарщину принимают за высокий скилл, а набор противоречащих друг другу заявлений за истину.
Я вижу, как посты редактируются после первого же комментария, как люди в публичном поле, имеющие приличный вес в сообществе, меняют их, удаляют и как ни в чём не бывало считают, что вводить тысячи читателей в заблуждение — это ок.
Поверьте, всегда можно отличить практика от того, кто это имитирует.
Всегда можно отличить знание от повторения.
Практикуйтесь в технической части. Решайте сложные задачи.
Формируйте собственное мнение.
Please open Telegram to view this post
VIEW IN TELEGRAM
39❤🔥32🔥15💯10👍9 6🤝4
📖 В официальном блоге Apple написали о ещё одном важнейшем шаге по экспансии Swift.
Цель обновления в том, чтобы добавить возможность разработки Swift-приложений на всех платформах.
Для тех, кто уже юзает VS Code, переход должен быть плавным.
И ещё одна цитата из новости про Swift Build о том, планируется ли расширять и давать возможности для разработки других IDE, а выводы пусть каждый сделает сам.
We believe this is an important step in continuing to enable a healthy package ecosystem where developers can rely on a consistent, polished development experience — no matter what IDE they’re using or platform they’re targeting. We’ll be sharing more details about this work on the Swift forums, and we’re looking forward to hearing others’ feedback!
Please open Telegram to view this post
VIEW IN TELEGRAM
18 33👍15✍5❤🔥3⚡2🔥2🎉2👌1💯1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра «Жизнь» Конвея: реализация c использованием MetalKit
📖 Пост про автомат Конвея (и даже пример реализации на Swift) уже был в нашем канале.
Эндрю Глейв показал, как можно сделать визуализацию с использованием vertex & fragment шейдеров.
🛠 Код доступен на Github.
😃 iOS Dev
📖 Пост про автомат Конвея (и даже пример реализации на Swift) уже был в нашем канале.
Эндрю Глейв показал, как можно сделать визуализацию с использованием vertex & fragment шейдеров.
🛠 Код доступен на Github.
Please open Telegram to view this post
VIEW IN TELEGRAM
18 20👍13⚡7🔥4👏2👌2🎄2🎉1
В закрытой базе я стараюсь разбирать то, что применимо в нашей работе - не только особенности коллекций или, например, URLSession, но и самые разные аспекты - от решения проблем с производительностью до блока с десятками алгоритмических задач, которые действительно используются в разработке.
🧠 Что вы получите, подписавшись сегодня:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки
Кроме этого, читатели, которые давно читают канал, знают, что есть ещё и приложение-компаньон.
В нем есть несколько интересных тем, режимов и даже интерактивный лидеборд.
В последнем релизе добавил больше вопросов на чтение кода, расширил режим хардкора и запилил больше интерактива для таблицы лидеров (теперь можно посмотреть их стату и по рангам).
Все, кто подписан на любой уровень, уже получили доступ к обновлению в тестфлайте.
Вы тоже можете поддержать развитие проектов и получить доступ к закрытой базе и ко всем обновлениям раньше остальных.
Специальное предложение уже доступно
Please open Telegram to view this post
VIEW IN TELEGRAM
21 21🎉8☃6👍5🔥2🤩2🎄2✍1🆒1
Objective-C всё ещё сохраняет лидирующую позицию с уровнем в 350к, Swift вплотную подобрался к 300 000.
Медианная зарплата в IT — 180 000 ₽, это на 19% больше первого полугодия 2024.
📖 Полные результаты исследования здесь, сравнить тенденцию изменений можно с этим постом.
Please open Telegram to view this post
VIEW IN TELEGRAM
15 28👍7🔥6✍3👏2💯2🎉1👌1
NSAttributedString: создание, редактирование и управление атрибутами
UILabel стоит больше, чем вы думаете — это не просто утверждение, а факт. Если вы работали с большим количеством стилей, то эта тема может быть очень близка. А когда мы говорим про что-то более производительное, нет иного варианта, кроме как уйти к Core Text.
Несмотря на это, работа со строками встречается постоянно, в любых приложениях - поэтому знать особенности и способы редактирования полезно.
📖 В этой статье доступно изложены варианты работы с разными атрибутами (создание кликабельных ссылок, параграфов, вложений-картинок и не только).
Приятно, что автор понимает издержки и указывает про возможность кэширования таких строк.
😃 iOS Dev
UILabel стоит больше, чем вы думаете — это не просто утверждение, а факт. Если вы работали с большим количеством стилей, то эта тема может быть очень близка. А когда мы говорим про что-то более производительное, нет иного варианта, кроме как уйти к Core Text.
Несмотря на это, работа со строками встречается постоянно, в любых приложениях - поэтому знать особенности и способы редактирования полезно.
📖 В этой статье доступно изложены варианты работы с разными атрибутами (создание кликабельных ссылок, параграфов, вложений-картинок и не только).
Приятно, что автор понимает издержки и указывает про возможность кэширования таких строк.
Please open Telegram to view this post
VIEW IN TELEGRAM
17 21👍10🔥6💯3✍2❤🔥2👏1🎉1🎄1