我目前正在构建一个应用程序,该应用程序需要识别SVG地图内的接触点。因此,我有一个map
和多个rectangles
,并且当用户触摸其中一个rectangles
时,需要触发一个动作。我该怎么解决?
一种选择是数学计算触摸位置是否位于矩形之间,但我不是数学天才。
我的首选选项是使用框架。我找到了SVGKit框架,但不幸的是它是用Objective C编写的。
答案 0 :(得分:1)
您可以将SVGKit用于Swift项目。您必须使用伞头文件,它是框架的“主”头文件。
将Objective-C导入Swift
从您的Objective-C代码访问类和其他声明 斯威夫特。
概述
您可以在一个项目中同时使用Objective-C和Swift文件, 无论项目最初使用哪种语言。这使得 创建简单易用的混合语言应用程序和框架目标 就像创建使用单一语言编写的应用或框架目标一样。
在Swift中使用Objective-C声明的过程 取决于特定语言,混合语言目标中的代码略有不同 无论您是编写应用程序还是框架。这两个过程都是 如下所述。
在应用程序目标中导入代码
要将同一套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桥接标头中,导入要公开给Swift的每个Objective-C标头。
- 在“构建设置”的“ Swift编译器-代码生成”中,确保“ Objective-C桥接标题”构建设置具有指向以下对象的路径: 桥接头文件。路径应相对于您的项目, 类似于在Build中指定
Info.plist
路径的方式 设定在大多数情况下,您无需修改此设置。桥接头中列出的任何公共Objective-C头都是 对Swift可见。 Objective-C声明是自动的 可从该目标内的任何Swift文件中获取,而无需导入 陈述。使用自定义中的类和其他声明 具有与系统相同的Swift语法的Objective-C代码 课程。
在框架目标中导入代码
要在同一框架中的文件中使用Objective-C声明 目标作为您的Swift代码,则需要将这些文件导入到 Objective-C伞式标头-框架的主标头。 通过配置伞形头来导入您的Objective-C文件:
- 在“包装”下的“构建设置”下,确保将框架目标的“定义模块”设置设置为
Yes
。- 在伞状标题中,导入要公开给Swift的每个Objective-C标题。
Swift会在您的伞形标题中看到您公开公开的每个标题。 该框架中的Objective-C文件的内容是 可从该框架内的任何Swift文件自动获得 目标,没有导入语句。使用类和其他声明 从您的Objective-C代码中使用与您使用的相同的Swift语法 系统类。
其他信息