Теперь статьи можно также найти на моем личном сайте, на котором в будущем будет появляться все больше и больше курируемого контента: https://verticalcoding.com. Я настоятельно рекомендую вам следить за мной там :)

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

Эта статья является частью продолжающейся серии статей о новых функциях SwiftUI4, появившихся в iOS 16 и Mac OS 13. Если вы хотите ознакомиться с предыдущими статьями, вот ссылка на первую: «SwiftUI NavigationStack — как использовать Deep Link и что такое Новый". А остальное вы можете найти прямо на странице моего профиля. Теперь вернемся к чтению.

В процессе обучения и подготовки к iOS Meetup, на котором я буду выступать (если вы из Польши, не стесняйтесь присоединиться, мы будем говорить в основном о SwiftUI, а также будет немного пива и пиццы), я решил поделиться



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

func shareButton() {		
		let url = URL(string: "https://designcode.io")
		let activityController = UIActivityViewController(activityItems: [url!], applicationActivities: nil)

		UIApplication.shared.windows.first?.rootViewController!.present(activityController, animated: true, completion: nil)
}

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

ShareLink — базовая реализация

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



Таким образом, реализация проста и понятна, из документации вы можете видеть, что обязательные переменные, необходимые для ShareLink, представляют собой элемент, который может быть строкой, URL-адрес, в основном, все, что соответствует Transferable. Ниже вы можете найти два таких примера:

ShareLink — нечто большее

То, что Apple добавила в ShareLink, я бы назвал чем-то дополнительным. Хотя мы можем использовать простые известные типы для всех разработчиков, мы также можем создавать собственные типы, соответствующие протоколу Transferable, что дает нам возможность делиться этими пользовательскими типами с ShareSheet. А ниже я создал реализацию такого пользовательского типа для прогресса с меткой датчика. Таким образом, мы можем поделиться текущим прогрессом в некоторых задачах в игре или, может быть, прогрессом чтения статьи.

И это выглядит так:

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

Спасибо за прочтение статьи, оставьте комментарий, если я написал что-то не так или если у вас есть совет, который я очень хочу услышать от вас. И если вы хотите поговорить о ShareLink или Swift и SwiftUI, вы можете найти меня здесь: