如何在Swift中识别SVG对象内部的触摸?

时间:2019-01-10 16:02:10

标签: objective-c swift xcode svg svgkit

我目前正在构建一个应用程序,该应用程序需要识别SVG地图内的接触点。因此,我有一个map和多个rectangles,并且当用户触摸其中一个rectangles时,需要触发一个动作。我该怎么解决?

一种选择是数学计算触摸位置是否位于矩形之间,但我不是数学天才。

我的首选选项是使用框架。我找到了SVGKit框架,但不幸的是它是用Objective C编写的。

1 个答案:

答案 0 :(得分:1)

您可以将SVGKit用于Swift项目。您必须使用伞头文件,它是框架的“主”头文件。

  

将Objective-C导入Swift

     

从您的Objective-C代码访问类和其他声明   斯威夫特。

     

概述

     

您可以在一个项目中同时使用Objective-C和Swift文件,   无论项目最初使用哪种语言。这使得   创建简单易用的混合语言应用程序和框架目标   就像创建使用单一语言编写的应用或框架目标一样。

     

enter image description here

     

在Swift中使用Objective-C声明的过程   取决于特定语言,混合语言目标中的代码略有不同   无论您是编写应用程序还是框架。这两个过程都是   如下所述。

     

在应用程序目标中导入代码

     

要将同一套Objective-C文件导入同一代码中的Swift代码   应用程序目标,则依靠Objective-C桥接头文件来公开   这些文件交给Swift。 Xcode提供在添加时创建此标头的功能   一个Swift文件到一个现有的Objective-C应用程序,或者一个Objective-C文件来   现有的Swift应用。

     

enter image description here

     

如果接受,则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语法   系统类。

     

Source

其他信息