This media is not supported in your browser
VIEW IN TELEGRAM
Пока мы ждём выкатки API для разработчиков, некоторые счастливчики на бете успели потестить функциональность.
Похвалитесь, кто был в листе ожидания, получили ли доступ? В Европе пока все эти фичи (даже в бете) недоступны.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация переходов между view в SwiftUI
Transitions (или переходы) улучшают пользовательский опыт, делая взаимодействие более плавным и приятным.
При смене интерфейса визуально подчеркивается связь между различными элементами пользовательского интерфейса.
В качестве примеров, где используются такие анимации, можно привести:
🔘 Навигация между экранами.
🔘 Добавление (или удаление) элементов из списка.
🔘 Показ модальных вьюх.
📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.
🔗 В канале есть ещё и пример таких переходов с использованием Metal.
😃 iOS Dev
Transitions (или переходы) улучшают пользовательский опыт, делая взаимодействие более плавным и приятным.
При смене интерфейса визуально подчеркивается связь между различными элементами пользовательского интерфейса.
В качестве примеров, где используются такие анимации, можно привести:
📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Комплексное руководство по работе с KeyPath в Swift
В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.
Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.
📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.
5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.
😃 iOS Dev
В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.
Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.
📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.
5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с таймерами в Swift
Таймеры в Swift используются постоянно: для планирования отложенных или повторяющихся задач.
В статье, затрагивающей моменты создания и работы с таймерами, автор напоминает несколько важных моментов:
🔘 Зачем вообще нужны таймеры в Swift.
🔘 Повторяющиеся (и не повторяющиеся) таймеры.
🔘 Как запланировать повторяющиеся задачи.
🔘 Что такое tolerance и как runloop modes влияют на работу таймера.
📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).
😃 iOS Dev
Таймеры в Swift используются постоянно: для планирования отложенных или повторяющихся задач.
В статье, затрагивающей моменты создания и работы с таймерами, автор напоминает несколько важных моментов:
📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация размытия экрана в режиме многозадачности
🔑 Повышение уровня конфиденциальности важно при разработке современных приложений (особенно мессенджеров или банковских приложений).
📖 В этой статье показан простой способ размытия контента, когда пользователь переходит в многозадачный (или фоновый режим).
😃 iOS Dev
📖 В этой статье показан простой способ размытия контента, когда пользователь переходит в многозадачный (или фоновый режим).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пару лет назад я уже пробовал запилить нечто подобное в одном из чатов на комбинации эффектов частиц, но
В этом году под 31 октября я решил повторить опыт, уже с использованием Metal, и вышло, как мне кажется, гораздо лучше.
На видео не используются никакие текстуры, только натив.
Описал весь опыт, источники и привёл пример кода на Swift эксклюзивно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разрешено ли у вас использовать ChatGPT (и аналоги) в компании?
Anonymous Poll
62%
Да (можно любые запросы)
24%
Да, но только без передачи кода проекта на вход
14%
Нет, строгий запрет
Шифр Виженера или приключение на одну минуту
Наверняка вы знаете про шифр Цезаря (даже если никогда не думали про Римскую империю).
Но если в шифре Цезаря каждая буква алфавита сдвигается на несколько позиций, шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига.
Для шифрования нужню юзать таблицу алфавитов (она же tabula recta или квадрат Виженера).
Например, для латиницы это будет таблица из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций.
Таким образом, в таблице получится 26 различных шифров Цезаря.
🚀 Но давайте к делу!
У меня есть одна проходка на конференцию Podlodka, которую я решил разыграть между самыми быстрыми и внимательными читателями нашего канала.
В канале я спрятал ключевое слово, подсказка — этот пост.
Используйте ключевое слово к этой строке:
Всем удачи (для дешифрования можете использовать любые алгоритмы, сервисы, в общем - самый быстрый способ, но регистр важен!).
И ещё, пожалуйста, поделитесь в комментариях найденным кодом (после активации), чтобы остальные читатели знали, когда можно остановиться.
😃 iOS Dev
Наверняка вы знаете про шифр Цезаря (даже если никогда не думали про Римскую империю).
Но если в шифре Цезаря каждая буква алфавита сдвигается на несколько позиций, шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига.
Для шифрования нужню юзать таблицу алфавитов (она же tabula recta или квадрат Виженера).
Например, для латиницы это будет таблица из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций.
Таким образом, в таблице получится 26 различных шифров Цезаря.
🚀 Но давайте к делу!
У меня есть одна проходка на конференцию Podlodka, которую я решил разыграть между самыми быстрыми и внимательными читателями нашего канала.
В канале я спрятал ключевое слово, подсказка — этот пост.
Используйте ключевое слово к этой строке:
qck_fvzy_14_UYxpuF
и вы получите код билета на конференцию.Всем удачи (для дешифрования можете использовать любые алгоритмы, сервисы, в общем - самый быстрый способ, но регистр важен!).
И ещё, пожалуйста, поделитесь в комментариях найденным кодом (после активации), чтобы остальные читатели знали, когда можно остановиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как запретить создание скриншотов для важных экранов в Swift
Для этого пригодится элегантное решение с применением свойства
📖 В этой статье автор делится необходимыми шагами с примером кода.
😎 Кстати, способ актуален и для записи видео с экрана девайса.
⭐️ Больше примеров и необычных решений здесь.
😃 iOS Dev
Для этого пригодится элегантное решение с применением свойства
isSecureTextEntry
с помощью кастомного модификатора.📖 В этой статье автор делится необходимыми шагами с примером кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание адаптивной верстки в SwiftUI с использованим Layout-протокола
Комбинация
Важно обладать навыками для создания верстки, которая хорошо выглядит и в портретной, и в альбомной ориентации экрана.
📖 В этом материале разбирается подход с использованием протокола Layout (доступного с 16 iOS).
😃 iOS Dev
Комбинация
UICollectionView
и UICollectionViewFlowLayout
в UIKit дает много гибкости и контроля для создания любых нужных нам макетов, но вот в SwiftUI с этим могут быть сложности.Важно обладать навыками для создания верстки, которая хорошо выглядит и в портретной, и в альбомной ориентации экрана.
📖 В этом материале разбирается подход с использованием протокола Layout (доступного с 16 iOS).
Please open Telegram to view this post
VIEW IN TELEGRAM
Невозможно всё знать
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
😃 iOS Dev
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация приложения для игры в шахматы на SwiftUI
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
😃 iOS Dev
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансия iOS-разработчика в VK Видео
VK ищут сотрудника в команду, которая создаёт продукты в области обработки и передачи видео, алгоритмы машинного обучения и компьютерного зрения, а также видео-конференц-связь для пользователей компании.
Задачи, которые нужно будет решать:
🔘 Разработка приложения ВКонтакте и VK Видео для iOS и tvOS.
🔘 Создание важных инструментов: загрузчик и редактор видео.
🔘 Участие во всех этапах разработки — от проектирования до запуска.
Что ждут от кандидата:
🔘 Отличное знание Swift и платформы iOS в целом, уровня middle+ и выше.
🔘 Опыт работы с Objective-C или готовность его изучить.
🔘 Знание классических алгоритмов и структур данных.
🔗 Откликнуться можно здесь.
VK ищут сотрудника в команду, которая создаёт продукты в области обработки и передачи видео, алгоритмы машинного обучения и компьютерного зрения, а также видео-конференц-связь для пользователей компании.
Задачи, которые нужно будет решать:
Что ждут от кандидата:
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое краш в iOS: детальный разбор
Конечно, факт того, что краш - это завершение работы приложения, является очевидным.
Джейкоб Бартлетт рассматривает природу сбоев с другого угла, ведь на самом деле система вызывает краш, чтобы сохранить устройство в безопасности.
📖 Делюсь отличной статьёй, в которой сложная тема рассмотрена с юмором (и даже приведены 9 уровней зла от падения фрейм-рейта до компрометации системы в целом).
Рассмотрены сбои не только в рантайме, но и в ядре XNU, а ещё указано, почему краши - далеко не самое худшее, что может произойти с девайсом.
😃 iOS Dev
Конечно, факт того, что краш - это завершение работы приложения, является очевидным.
Джейкоб Бартлетт рассматривает природу сбоев с другого угла, ведь на самом деле система вызывает краш, чтобы сохранить устройство в безопасности.
📖 Делюсь отличной статьёй, в которой сложная тема рассмотрена с юмором (и даже приведены 9 уровней зла от падения фрейм-рейта до компрометации системы в целом).
Рассмотрены сбои не только в рантайме, но и в ядре XNU, а ещё указано, почему краши - далеко не самое худшее, что может произойти с девайсом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Большое обновление App Store Connect — версия 2.0
🎉 Apple обновили приложение (надеюсь, теперь не будет постоянного дропа сессий, как раньше), можно подписаться на уведомления о фичеринге и не только.
А ещё появился целый раздел, в котором можно напрямую номинировать своё приложение на фичеринг (среди типов добавление контента, улучшение функциональности или в целом запуск).
📖 Узнать больше о номинациях и новых доступных ресурсах можно здесь.
😃 iOS Dev
🎉 Apple обновили приложение (надеюсь, теперь не будет постоянного дропа сессий, как раньше), можно подписаться на уведомления о фичеринге и не только.
А ещё появился целый раздел, в котором можно напрямую номинировать своё приложение на фичеринг (среди типов добавление контента, улучшение функциональности или в целом запуск).
📖 Узнать больше о номинациях и новых доступных ресурсах можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Обнаружение лиц на изображениях с помощью фреймворка Vision
Распознавание лиц может оказаться полезным инструментом для многих приложений.
Например в системном «Фото» от Apple это используется для организации специальной коллекции.
В 18 оси для разработчиков появилась возможность использовать новый запрос
📖 Доступное объяснение и пример использования есть в этой статье.
😃 iOS Dev
Распознавание лиц может оказаться полезным инструментом для многих приложений.
Например в системном «Фото» от Apple это используется для организации специальной коллекции.
В 18 оси для разработчиков появилась возможность использовать новый запрос
FaceObservation
, который упрощает работу с такими задачами.📖 Доступное объяснение и пример использования есть в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект переливающегося стикера на Metal+Swift
Крутые анимации всегда сложны, а довести задуманное до конца уже неплохо.
🤩 Нашел блестящую (в прямом и переносном смыслах) реализацию фойл-эффекта. Кстати, автор пишет, что пытался повторить то, что можно встретить в самых разных карточках, например, в покемонах.
Использовано сразу несколько шейдеров и модификаций внутри.
📖 Бонусом идёт репозиторий с кодом (из коробки доступно для настройки несколько параметров).
✅ А здесь ещё больше сложных анимаций и эффектов.
😃 iOS Dev
Крутые анимации всегда сложны, а довести задуманное до конца уже неплохо.
Использовано сразу несколько шейдеров и модификаций внутри.
📖 Бонусом идёт репозиторий с кодом (из коробки доступно для настройки несколько параметров).
Please open Telegram to view this post
VIEW IN TELEGRAM
TextEditor в SwiftUI: возможности, ограничения и советы
Работа с текстом — пожалуй, одна из самых частых и важных задач в нашей разработке.
В проектах, например, может быть поле для комментариев, создание заметок или даже полноценный редактор.
В SwiftUI есть возможность использования TextEditor. И пусть он не такой мощный, как UITextView, его вполне достаточно для большинства случаев использования.
📖 В этом материале разбираются не только примеры использования (например, как сделать свою функцию find/replace), но и приводится простой пример реализации.
😃 iOS Dev
Работа с текстом — пожалуй, одна из самых частых и важных задач в нашей разработке.
В проектах, например, может быть поле для комментариев, создание заметок или даже полноценный редактор.
В SwiftUI есть возможность использования TextEditor. И пусть он не такой мощный, как UITextView, его вполне достаточно для большинства случаев использования.
📖 В этом материале разбираются не только примеры использования (например, как сделать свою функцию find/replace), но и приводится простой пример реализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Подробное объяснение работы с Environment в SwiftUI
Автор статьи считает, что SwiftUI буквально произвёл революцию в разработке приложений благодаря декларативному синтаксису и реактивной обработке данных, тем самым упростив создание динамичных и отзывчивых пользовательских интерфейсов.
В основе фреймворка лежит обертка свойств
📖 В статье подробно описаны различные механизмы от классических протоколов
А ещё уделено внимание производительности и сложным иерархиям вью в приложении.
😃 iOS Dev
Автор статьи считает, что SwiftUI буквально произвёл революцию в разработке приложений благодаря декларативному синтаксису и реактивной обработке данных, тем самым упростив создание динамичных и отзывчивых пользовательских интерфейсов.
В основе фреймворка лежит обертка свойств
@Environment
(и связанные с этим инструменты). 📖 В статье подробно описаны различные механизмы от классических протоколов
@EnvironmentObject
и ObservableObject
до относительно новых макросов @Observable
и @Bindable
. А ещё уделено внимание производительности и сложным иерархиям вью в приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM