Лекция 10. EmojiArt. CS193P Spring 2023.

Ниже представлен небольшой фрагмент Лекции 10 Стэнфордского курса CS193P Весна 2023 «Разработка iOS приложений с помощью SwiftUI«.
Полный русскоязычный неавторизованный конспект Лекции 10 в формате Google Doc и в виде PDF-файла, который можно скачать и использовать offline, доступны на платной основе.
Код находится на GitHub.

С полным перечнем Лекций и Домашних Заданий на русском языке можно познакомиться здесь.

. . . . . . . . . . . . . .

Демо. “Сброс” Drop фонового изображения background

Давай сделаем “сброс”  (drop) URL-адреса фонового изображения background. Это действительно очень очень легко. 
Куда мы хотим это “сбросить”?
По сути, мы хотим “сбросить” его поверх нашего ZStack, это наш документ.
Итак, модификатор .dropDestination.
Что мы сбрасываем?
URL-адрес:

Обратите внимание на этот URL.self, когда вы пишите .self на нижнем регистре, то это означает сам ТИП. Таким образом, я передаю .dropDestination ТИП URL.self в качестве аргумента, так что мой документ знает, что мы ожидаем при “сбросе”. В замыкании у нас есть массив URL-адресов urls и место “сброса” location.
Для фонового изображения background нам неважно место “сброса” location, но это нас явно интересует при “сбросе” эмодзи (смайликов), и мы должны поработать с этим location.
Это замыкание должно вернуть информацию о том, был ли “сброс” успешным, потому что некоторые “сбросы” на этот View могут вас не устраивать. Тогда вам придется сказать:”НЕТ, лети обратно, туда, откуда пришел”.
Я собираюсь вернуть return функцию func drop (urls, at: location, in: geometry), которую я собираюсь написать через секунду:

Читать далее