Telegram Web Link
Большое руководство для проверки пользовательских данных в SwiftUI

Валидация не должна быть слишком сложной, так как основная цель в том, чтобы сигнализировать пользователю о некорректности вводимой инфы.
Этого можно добиться, показывая сообщения об ошибках, подсвечивая поля или включая/отключая определенные действия.

ℹ️ Распространённый подход к реализации — создание кастомных компонентов, но и у этого варианта есть свои минусы.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация кликабельных ссылок в SwiftUI

Благодаря Markdown в SwiftUI довольно легко можно реализовать такую возможность.

Кроме этого, можно юзать не только глобальный стиль, но и задать собственный для каждой из ссылок.

📖 В этой статье описаны необходимые шаги, а здесь доступно опенсорсное решение.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
UICollectionView — кастомизация, лучшие практики и необычные советы

UICollectionView по праву мощнейший инструмент для верстки, который используют 99.99% приложений.

👨‍💻 Я решил поделиться набором советов и практик в iOS IQ, среди которых, например, способы создания кастомных заголовков, перетаскивание ячеек, кастомные лэйауты и многое, многое другое.

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

Безусловно, как и остальные секции, раздел будет постоянно пополняться.

💰 Получить доступ можно тут и ⭐️ тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные инструменты

Умение использовать встроенные средства Xcode — невероятно полезно для разработчика любого уровня. И дело не только в профайлере или других важных опциях, но и в системных фреймворках. В канале я касался области знаний, связанных со сторонними зависимостями (и их возможными недостатками).

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

ℹ️ Например, на мобиусе несколько назад был рад послушать в офлайне замечательный доклад Евгения Ртищева об эффективной работе с сетью (если кто-то не видел, посмотрите обязательно).

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

Поэтому делюсь полезным опросом от Максима Гришутина на счёт самых используемых фреймворков, связанных с 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-приложений

🎆 Делюсь очередной находкой, интересным сайтом, на котором собраны лучшие анимации в приложениях Apple и не только.

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

🔗 Уже сейчас собрано около 1000 анимаций, которые могут вдохновить вас на создание своих собственных.

Кстати, вот тут вы можете найти реализацию некоторых эффектов (в том числе и на Metal).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка топовых докладов с NSSpain 2024

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

📺 Реализация плавной прокрутки в Threads*.
Несмотря на то, что iPhone и iPad продолжают становиться все мощнее и мощнее, поддерживать плавность прокрутки приложений как никогда важно. Кстати, вот тут доступна первая версия доклада.

📺 Как создать лучший Pull Request
Написать хороший код - это только половина дела.

📺 Вы действительно знаете Swift?
В этом докладе автор рассказывает о некоторых API, которые мы используем каждый день, чтобы понять, что происходит на самом деле, и обещает показать несколько трюков, которых вы раньше не видели.

📺 Тестируйте свои приложения!
Krzysztof Zablocki делится информацией, как тестирование может сделать вас более эффективным и каковы лучшие практики для поддерживаемых тестов!

🔗 Целиком плейлист конференции доступен по этой ссылке.

Другие интересные подборки докладов:

🔗 Подборка докладов с iOS Conf SG 2024
🔗 Подборка докладов с конференции Swift Craft
🔗 Доклады с конференции try! Swift Tokyo 2024
🔗 Подборка докладов с конференции Swift Connection 2024

*Threads и Instagram принадлежит компании Meta, признанной экстремистской и запрещенной в России.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Итоги

Даже не верится, что сегодня уже 31 декабря. Так много всего произошло: хорошего и не очень. В любом случае, каждое событие уходящего года как мазок кисти художника формирует наш бэкграунд, и только от нас зависит, стоит ли оставить эту картину в таком виде, добавить новый слой или заламинировать воспоминания.

В этом году было много отличных исследований, статей, появилось приложение, а некоторые из постов канала получили невероятную огласку в СМИ. И пусть из-за большой рабочей загрузки ритм постов изменился, но что-то новое здесь будет всегда.

🎄Новый год для кого-то может быть только временной меткой, особенно в наше время повышенной тревожности, переживаний и растущего стресса в мире, особенно для тех, кто сейчас далеко от своего дома. В то же время — это пора праздника, единения, лучшая пора побыть с друзьями и своей семьёй. Хорошо, что сейчас есть средства связи с теми, кто в тысячах километров — и многие из нас поучаствовали в разработке таких приложений.

Написанный код должен приносить деньги, но всем нам полезно помнить, для чего это всё. Хочется находить время не только на развитие, но и на отдых.

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

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

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

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

Ну а счастье. Счастье никогда не меняется.

С наступающим, у нас будет ещё много интересного.
Конечно, у большинства ещё не начались рабочие дни, но часть из нас понемногу вкатывается в новый отрезок.

В этом году есть несколько вещей, на которых хотелось бы сконцентрироваться детальнее:

1. Развитие контента будет не только вширь, но и вглубь. Постараюсь расставлять акценты на том, что полезно в нашей работе.
2. Приоритеты как всегда будут на качество постов, статей, исследований и советов, а не на их количество.
3. Максимально полезные вещи в базе знаний.
4. Новые проекты и развитие приложения (или даже приложений).

И поскольку это только начало года, возможно вы сами планируете все-таки начать или довести какой-то проект из своих до конца. Мне кажется, это лучшее время для старта.
Делюсь небольшой подборкой постов из канала (в том числе для тех, кто присоединился к нам недавно):

🔗 Мой опыт разработки пет-проектов - советы, ошибки, идеи.

🔗 Декомпозиция задачи или почему добавить одно поле это приключение НЕ на одну минуту?

🔗 Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором

🔗 Есть ли место творчеству в разработке?

⭐️ А для более глубокого и вдумчивого изучения сложных тем (и подготовки к собеседованиям с любой из сторон) вы можете подписаться на бусти и в телеграм (действует вводное предложение).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
YUI — галерея плавных интерактивных переходов на UIKit

Хотя SwiftUI отлично подходит для быстрого создания интерфейсов и приложений, однотипные контролы повторяют друг друга, и впечатление от использования может оказаться далеко не самым приятным (особенно учитывая отзывчивость интерфейса).

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

Будет полезно взглянуть на использование UIViewControllerTransitioningDelegate/UIViewControllerInteractiveTransitioning и UIPercentDrivenInteractiveTransition.

🛠 Ссылка на репозиторий с эффектами и описанием подхода доступна вот здесь.

Больше подходов к реализации анимаций в базе.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Пора ли переходить на Swift 6 в 2025 году?

Donny Wals задаётся этим вопросом и приводит несколько важных моментов, на которые стоит обратить внимание.

И хотя ответ для каждого зависит от множества переменных: проект, над которым вы работаете, команда, с которой вы работаете, и знания Swift Concurrency в целом, Донни сосредоточился на разборе проблем и существующих вызовах.

📖 Полностью статью можно прочесть здесь.

Краткие выводы, стоит ли переходить на Swift 6:

1. Да, если у вас небольшая кодовая база.
2. Да, если вы хорошо разбираетесь в концепциях параллелизма (и у вас достаточно времени).


О существующих проблемах можно посмотреть и в докладе из этого поста.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем нужен init(coder:) для View Controllers?

Наверняка, если вы только недавно начали работать с UIKit или просто перешли к верстке кодом, то могли встретить ошибку

'required' initializer 'init(coder:)' must be provided by subclass of 'UIViewController'

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

Так почему это происходит?

Класс UIViewController соответствует протоколу NSCoding.

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

На примере Storyboard: в рантайме UIStoryboard создает контроллер программно, кодируя его как раз с помощью протокола NSCoding.

Storyboard передает архив данных контроллера в метод init(coder:), который затем и использует эти данные для воссоздания состояния контроллера.

📖 Понятный и несложный разбор доступен в этой статье.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с Lists в SwiftUI: виды, примеры и кастомизация

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

Нам доступны различные стили и опции (цвет фона, поддержка возможности выбора и добавление секций).

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для чего нужен @discardableResult в Swift?

Многие функции возвращают значения, но иногда для нас совершенно неважно, какое значение прилетает. В таком случае хочется игнорировать эти предупреждения (например, при логировании).

В таком случае может пригодиться @discardableResult. Но если значения будут нужны чаще, то возможно эта практика не будет оптимальной (тогда лучше использовать нижнее подчёркивание _, чтобы отключить назойливый ворнинг).

📖 Вы можете взглянуть на два примера использования: здесь и в этой статье.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️ Приложения без статуса трейдера будут удалены из App Store

Apple напомнили, что начиная с 17 февраля 2025 года приложения без статуса трейдера будут удаляться из App Store в странах Европейского Союза до тех пор, пока статус трейдера не будет предоставлен и, при необходимости, подтвержден.

🔗 Детальная расшифровка новости здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание стикеров в Swift с помощью удаления фона

📖 В этой статье можно узнать, как повторить системный эффект и создать стикер с помощью Vision и двух основных классов: VNImageRequestHandler и VNGenerateForegroundInstanceMaskRequest.

🛠 Код проекта доступен на GitHub.

А в этом посте можно посмотреть, как реализовать эффект переливающегося стикера на Metal+Swift.

В базе знаний есть и другие нетривиальные анимации и реализации эффектов.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание универсального компонента для меню в SwiftUI

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

В частности, затронуты следующие аспекты:

🔘 Прототипирование.

🔘 Кастомные view modfiers (как создавать и интегрировать).

🔘 Работа с View Builders (и как отделять вью от бизнес-логики).

🔘 Стили для вью (и их настройка).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Отладка приложения при ограниченном доступе

Bryce Bostwick, исследования которого часто можно встретить в нашем канале (про анимированную иконку приложения, например), поделился любопытным взглядом на возможность отладки внешнего приложения.

Вводные данные приложения:

1. Блокирует подключение дебаггера.
2. Закрывается, если вы пытаетесь внедрить какой-либо код.
3. Крашит телефон, если на нём есть джейлбрейк.

📖 Что из этого получилось, можно посмотреть в этом видео или прочитать в статье.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Эксперименты с Metal - шейдер, имитирующий портал

Под капотом используется комбинация шума + emission shader.

📖 У celestialmaze в твиттере можно чекнуть, какие параметры можно заюзать для дальнейшей кастомизации.

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

Например:

🔗 Warp-эффект на metal-шейдере
🔗 Beauty infinite loop
🔗 Огненный шейдер

Код всех реализаций есть 💰 тут и ⭐️ тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Исследование создания анимаций в Spotify

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

В частности, почему от стандартной комбинации трансформа+bezier path они перешли на сочетание традиционных анимаций вместе с Lottie.

🎶 Например, для «Ауры аудио» пару лет назад сопоставлялась частота прослушивания того или иного жанра с интенсивностью цвета. В другом примере базой анимации служили координаты на карте, которые отражают местоположение предпочтений пользователя в прослушивании.

А начиная с 2023 года разработчики учли сочетание нативной анимации и Lottie. Нативная анимация отвечает за визуализацию данных и взаимодействие, а Lottie — за визуализацию брендов и анимацию с большим количеством кейфреймов, не требующих дополнительной параметризации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/02/21 18:19:46
Back to Top
HTML Embed Code: