Как распознать прикосновение внутри 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, который вы используете для системных классов.
Дополнительная информация