Как распознать прикосновение внутри SVG-объекта в Swift?

В настоящее время я создаю приложение, в котором мне нужно распознать точку касания на карте SVG. Итак, у меня есть map с несколькими rectangles и когда пользователь касается одного из них rectangles действие должно быть инициировано. Как я могу решить это?

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

Мой предпочтительный вариант будет использовать рамки. Я нашел SVGKit-фреймворк, но, к сожалению, он написан на Objective C.

1 ответ

Вы можете использовать SVGKit для проекта Swift. Вы должны использовать заголовочный файл зонтика, это "главный" заголовочный файл для фреймворка.

Импорт Objective-C в Swift

Получите доступ к классам и другим объявлениям из вашего кода Objective-C в Swift.

обзор

Вы можете использовать файлы Objective-C и Swift вместе в одном проекте, независимо от того, на каком языке проект изначально использовался. Это делает создание целей приложения и инфраструктуры на разных языках таким же простым, как создание цели приложения или платформы, написанной на одном языке.

Процесс использования ваших объявлений Objective-C из кода Swift в мишенях на разных языках немного отличается в зависимости от того, пишете ли вы приложение или фреймворк. Оба процесса описаны ниже.

Импорт кода внутри цели приложения

Чтобы импортировать набор файлов Objective C в код Swift в пределах одной и той же цели приложения, вы полагаетесь на файл заголовка моста Objective C, чтобы открыть эти файлы для Swift. Xcode предлагает создать этот заголовок, когда вы добавляете файл Swift в существующее приложение Objective C или файл Objective C в существующее приложение Swift.

Если вы принимаете, Xcode создает файл заголовка моста вместе с файлом, который вы создали, и присваивает ему имя, используя имя модуля вашего продукта, за которым следует "-Bridging-Header.h". В качестве альтернативы, вы можете создать соединительный заголовок самостоятельно, выбрав File > New > File > [operating system] > Source > Header File,

Отредактируйте соединительный заголовок, чтобы представить ваш код Objective-C вашему коду Swift:

  • В заголовке моста Objective C импортируйте каждый заголовок Objective C, который вы хотите показать в Swift.
  • В настройках сборки в Swift Compiler - Generation Code убедитесь, что в параметре сборки Objective-C Bridging Header указан путь к файлу заголовка моста. Путь должен быть относительно вашего проекта, так же, как ваш Info.plist путь указан в настройках сборки. В большинстве случаев вам не нужно изменять этот параметр.

Любые общедоступные заголовки Objective C, перечисленные в заголовке моста, видны Swift. Объявления Objective C автоматически доступны из любого файла Swift в пределах этой цели без операторов импорта. Используйте классы и другие объявления из вашего пользовательского кода Objective C с тем же синтаксисом Swift, который вы используете для системных классов.

Импорт кода в целевой структуре

Чтобы использовать объявления Objective-C в файлах в той же целевой платформе, что и ваш код Swift, вам необходимо импортировать эти файлы в зонтичный заголовок Objective-C - главный заголовок вашей платформы. Импортируйте файлы Objective-C, настроив зонтичный заголовок:

  • В разделе "Параметры сборки" в разделе "Упаковка" убедитесь, что для параметра "Определить модуль" для целевого объекта фреймворка задано значение Yes,
  • В зонтичном заголовке импортируйте каждый заголовок Objective-C, который вы хотите представить в Swift.

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

Источник

Дополнительная информация

Другие вопросы по тегам