Telegram Web Link
Создание клона приложения Messages с помощью SwiftUI

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

А посмотреть на реализацию эффекта отклеивания, как в нативном приложении, можно в этом посте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Apple использует Swift и SwiftUI в iOS 18

📖 Александре Колуччи в ежегодном исследовании (как и для прошлых версиях iOS) ответил на несколько вопросов:

1️⃣ Сколько бинарников содержит iOS 18?
2️⃣ Какие языки программирования использовались для разработки системных приложений?
3️⃣ Сколько приложений написано на чистом Swift?
4️⃣ Какой процент приложений использует SwiftUI по сравнению с UIKit?

Очевидный спойлер: количество приложений на Swift и SwiftUI растёт.

Но в iOS 18 Apple также начинает или по крайней мере планирует использовать Swift в низкоуровневой подсистеме Secure Enclave.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Прокачиваем использование ScrollView: создание коллекций с вертикальной и горизонтальной прокруткой

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

🔗А вот тут в канале можно почитать про реализацию эффектов ScrollView.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Разбор Apple Intelligence: генерация изображений

🔗 Image Playground, работающий на базе Apple Intelligence это новый инструмент, который позволяет легко переводить текстовые и визуальные запросы в изображения.

Он доступен в macOS 15.2 beta, iOS 18.2 beta и iPadOS 18.2 beta и расширяет творческие возможности не только для пользователей, но и для нас, разработчиков.

📖 С возможностями работы с Image Playground можно ознакомиться здесь.

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

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

📖 В этой статье, особенно полезной новичкам, рассматривается создание такого экрана, а ещё автор напоминает, для чего нужно использовать suiteName.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка докладов с конференции Swift Connection 2024

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

📺
Практическое руководство по производительности Swift
На практике иногда бывает сложно точно знать, на чем следует сосредоточиться (а чего следует избегать), чтобы писать действительно быстрый код Swift. Именно об этом и пойдет речь — с множеством советов и практических примеров.

📺 Данные? Данные! Они повсюду!
В докладе рассмотрены несколько опций и их производительность (Plist/SQLite/CoreData/Swift Data на примере работы с 1 ГБ данных).

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

📺 Swift 6 + Concurrency
Автор делится советами, которые позволят решать асинхронные задачи элегантно и эффективно.

📺 SwiftUI-анимации
В этом видео рассказано о различных способах создания анимации в SwiftUI.

📺 Полностью плейлист конференции доступен здесь.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Matt Massicotte о строгом параллелизме в Swift 6

Внедрение Swift 6 может быть непростым и вызывать большое количество проблем. Не помогает и количество ключевых слов: tasks, sendability, isolation domains и boundaries, actors, preconcurrency (и многое другое).

📺 В этом выпуске Dev Conversations Мэтт рассказывает не только об этом, но ещё о своём опыте работы с платформами Apple еще до появления OS X (а также о работе с батареей iPhone в конце 2000-х, и о первых днях работы в Crashlytics).

📖 Доступен и текстовый вариант беседы: вот здесь.

Вы также можете знать Мэтта по его блогу (некоторые решения и советы появляются и в нашем канале) и репозиторию:
🔗 Практические решения проблем с использованием Swift Concurrency на Github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI Button: кастомные стили и лучшие практики

Для многих приложений необходимо создавать кастомные компоненты.

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

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

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

Больше про подходы к кастомизации можно почитать в нашем канале:

🔗 Создание переиспользуемых компонентов в SwiftUI
🔗 Разбор кнопок SwiftUI: создание и возможности кастомизации
🔗 Настраиваемая кнопка с разными состояниями в SwiftUI

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Большое руководство для проверки пользовательских данных в 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
2025/04/11 17:51:23
Back to Top
HTML Embed Code: