正如统计数据所说:在您阅读本文时,全球有超过46.1亿手机用户,到2019年底,可能性超过60亿 ,其中大多数是iOS用户。 iOS智能手机已成为我们日常工作中不可或缺的一部分-这就是为什么要领先于瞬息万变的世界至关重要。 看看下面的统计表; 超过77%的澳大利亚人和72%的美国人定期使用手机。 总体上68%的用户几乎所有时间都在使用智能手机,而18%的美国用户通过移动电话进行付款和生成发票。 据 Google AdWords产品管理副总裁“ Jerry Dischler”说 “在移动设备上进行的Google搜索比在美国和日本等10个国家/地区的计算机上进行的搜索要多”。 (来源:adwords.googleblog.com) 现在,根据上述统计数据,至关重要的是维护智能手机中数据的隐私和安全性。 只有通过正确的设置步骤,才能在移动设备上实现数据隐私。 大多数iOS移动用户都信任此平台与他们的重要数据进行交易,例如电子邮件通信,图片和重要文档。 苹果提供了一些快捷选项,可以在具有高安全性的iOS设备上运行应用程序,并且用户必须了解这些详细信息,这很重要,因为忽略这些细节可能会影响丢失宝贵数据,从而失去对设备的保护。 在本文中,我将向您介绍iOS设备上的一些隐私和数据安全提示。 开始了… 1.谨慎处理并使用常识 没有这样的应用程序可以保护您的电话数据不受您的侵害-是的,这是事实。 链接插孔有助于访问陌生人手中的机密数据。 超过90%的智能手机用户都面临此类问题。 因此,在访问任何应用程序或链接之前,您必须三思而后行– 您正在访问什么! 什么是访问数据的媒介! 谁在发送数据和数据位置(是的,这很重要)! 请避免点击可能会带您到链接/网站的弹出链接,从而损害您的数据隐私。 2.避免使用HTTP并选择HTTPS进行交易 超文本传输协议(HTTP)是Internet的语言,是在万维网上使用的通信方式。 HTTPS (类似于https://www.example.com之类的东西)是安全的通信方式,它对两端之间的数据进行加密并有助于建立安全的交易-因此没有中间攻击的机会。 因此,您只需要与启用HTTPS的网站进行交易,以保护您的私人数据。 3.启用设备安全性 使用iOS中的内置设置应用程序,触摸ID和密码可以更改较长的数字,字母数字或自定义密码。 启用生物特征指纹读取器后,iOS会将数据和凭据保存在安全的存储区中,直到获得正确的指纹为止。 要访问基于Web的帐户和服务,您必须对额外的证券层进行身份验证,以提供更好的安全性并防止未经授权访问您的设备。 阅读更多
继续探索一些不常见的iOS框架的尝试,我们将尝试研究一个有趣但不受欢迎的候选者ReplayKit 。 ReplayKit使应用程序开发人员可以在其应用程序中记录活动的视频。 您也可以使用麦克风捕捉声音。 此框架自iOS 9起可用。从iOS 10开始,此框架使您可以为视频添加面部时间记录(例如实时评论)。 您甚至可以现场直播该应用程序的屏幕录像。 在wwdc会议中,Apple主要强调使用ReplayKit从游戏内部录制/直播您的游戏。 在任何应用程序中使用ReplayKit的一种可能性是错误报告。 如果测试人员可以选择记录导致错误的流程以及对缺陷的解释,那么事情会变得很容易。 但是您将无法使用ReplayKit报告任何崩溃。 我们稍后再讨论。 让我们来看一个示例,展示如何在这种情况下使用ReplayKit 。 项目概况 我们的项目由一个视图控制器组成,该控制器在表格中显示书籍及其作者的列表。 由于没有可供浏览的详细信息屏幕,因此当您单击书本条目时,在表格视图单元格上显示选择内容毫无意义。 但是默认情况下,表格视图单元格是可选的。 这可能是我们试图报告的错误。 BookListVC :显示书籍和作者的列表。 我们完成的BookListVC看起来像这样。 设置屏幕录像机 要设置屏幕录像机,我们使用ReplayKit的RPScreenRecorder类。 var screenRecorder:RPScreenRecorder? RPPreviewViewControllerDelegate RPPreviewViewController的代表在被关闭时会收到通知。 从屏幕快照中可以看到,有两种方法可以关闭视图控制器,既可以将记录保存为照片,也可以选择不选择。 如果应通知您的视图控制器如何解雇预览视图控制器,则应使用以下委托方法。 func PreviewController(RPPreviewViewController,didFinishWithActivityTypes:Set ) 从活动类型中,您可以找出如何解雇控制器。 如果集合包含saveToCameraRoll,则记录已保存到相机胶卷中。 如果集合为空,则仅关闭预览视图控制器。 如果您不熟悉活动类型,请遍历UIActivityType并内置活动类型 。 如您所见,预览视图控制器已关闭。 当应用程序导航到预览视图控制器时,我们将隐藏包含记录指示的窗口。 一旦将其关闭,就必须显示它,因为它是主UI的一部分。 您可以在下面查看我们的应用程序的录像。 崩溃报告失败!!! 现在回到为什么无法使用ReplayKit记录崩溃的原因 。 如果应用程序崩溃,整个录制流程将中断,并且永远无法将录制内容保存到“照片”中。 同样,涉及到移至后台然后弹回应用程序中的错误也无法正确记录。 在应用程序进入后台之前和应用程序进入前台之前,您将获得记录,而不是在应用程序外部花费的时间。 如果需要更清晰的说明,则可以自由浏览源代码 。 参考文献 ReplayKit上线– WWDC 2016 […]
我们最近一直在开发一款相对知名的“不稳定方块塔”游戏的AR版本,我们决定将其命名为Toppler。 我们采取的第一步就是使用Blender设计木块,然后直接在SceneKit中使用它们。 我将详细介绍将3D模型导出为.dae (数字资产交换)文件的过程以及如何将其与SceneKit一起使用。 您可能倾向于将其视为一个简单的步骤,但是需要注意一些事项,并且如果您以前没有做过此主题,那么缺少有关该主题的文档就尤其具有挑战性。 1.导出.dae文件 我使用Blender来制作木制积木(我将跳过积木创建步骤,这可能是以后的主题)。 您将在Blender中采取的最后一步是导出您的创作。 经典菜单,只需点击文件>导出> Collada(.dae)。 您将看到一个带有多个选项的导出窗口。 我们将感兴趣的选项是Selection Only 。 取消选中该复选框将导出场景中的所有内容(例如:灯光,照相机等)。 在这里,我们只希望将木块导出,因此我们将确保之前已选择它,然后将其选中。 选择一个适当的路径,然后单击右上角的“ 导出COLLADA”按钮。 导出后,您将在其纹理旁边找到导出的DAE文件(如果有的话)。 您甚至可以通过QuickLook获得不错的预览。 2. .dae文件 .dae文件格式(或COLLADA文件)已由“ 协作设计活动”定义。 就像定义3D对象各种特征的XML文件一样简单。 您将在文件中找到各种库,这些库将用于描述场景。 例如,我们将找到library_images来引用我们的纹理, 引用了我们的纹理和效果的library_geometries ,声明了可用几何形状的library_visual_scenes ,以及保存我们的场景元素并引用所需材质和几何形状的library_visual_scenes部分。 这里没有其他小节。 随时使用您喜欢的文本编辑器打开.dae文件,以亲自检查一下。 3.导入Xcode 使用Blender建模3D对象时要了解的一件事是与Xcode使用不同的坐标系: 在Xcode中,Y轴描述高度,而Blender中的Y轴描述深度(并且反向观察适用于Z轴)。 幸运的是,Xcode知道如何处理坐标系之间的这种差异。 如果查看Xcode中的scnassets资源文件夹,您会注意到“ 始终使用Y轴 ”选项。 意思是 : Xcode将强制执行自己的坐标系,并将转换任何使用不同坐标系的对象。 现在,只需将.dae文件及其纹理拖放到.scnassets文件夹中即可。 Xcode将自动使用适当的轴设置对其进行转换,您将能够使用Xcode Scene Editor打开它并预览3D对象。 如果最终将纹理.png文件移动到其他位置,请确保使用“材质检查器”将其重新分配给所需的材质。 4.转换为.scn 如果要使用场景编辑器(或任何特定于SceneKit的设置)更改3D对象的物理行为,则需要将模型转换为.scn文件。 在Xcode中预览模型时,请点击编辑器菜单,然后点击转换为SceneKit场景文件格式 。 然后你走了! 您最终将获得一个.scn文件,准备在SceneKit中完全使用它。 现在,您可以将其拖放到另一个场景中,或者可以通过代码将其导入并将其根节点添加到父SCNNode 。 […]
是时候挖掘核心数据了。 如果您错过了上一个第4部分:UIKit,请检查一下。 现在开始吧!!! 📀 问:持久性存储协调器可以有多个持久性存储吗? 持久性存储协调器将持久性对象存储和托管对象模型相关联 ,并向托管对象上下文提供外观,以使一组持久性存储显示为单个聚合存储。 它具有对托管对象模型的引用,该对象模型描述了商店中或其管理的商店中的实体。 在许多应用程序中,您只有一个商店,但是在复杂的应用程序中,可能有多个商店,每个商店可能包含不同的实体。 问:为什么我们需要多个持久性存储? 应用程序具有固定数据集,该数据集已包含在捆绑软件中 应用程序处理的某些数据是我们不希望保留在磁盘上的敏感信息 对不同实体有不同的存储要求 您可能已通过将文件包中的文件复制到可写位置并将其用作整个数据存储库的方式来满足第一个要求。 您可能已经通过手动删除对象来处理第二个问题。 在两种情况下,单独的持久性存储都是更好的解决方案。 每个持久性存储都有自己的特征-可以是只读的,可以二进制或SQLite或内存形式存储(在OS X上,也可以使用XML后备存储),也可以是您自己的NSIncrementalStore实现。 可以将模型的不同部分存储在不同的持久性存储中,以利用这种灵活性。 问:如何添加多个永久存储? 借助托管对象模型中的配置,我们可以实现这一目标。 我们可以创建多个配置并将其分配给不同的持久性存储。 我们希望每个商店一个配置 ,并且每个实体应仅添加到一个配置 (除了默认配置)。 实体可以具有多种配置,但是在这种情况下,您必须手动将每个对象分配给存储。 通过为每个商店创建一个配置并将每个实体分配给一个配置,我们使核心数据框架能够将实体定向到不同的商店,而无需任何进一步的交互。 问:我们可以在不同的持久存储实体之间建立关系吗? 您必须注意不要创建从一个持久性存储中的实例到另一个持久性存储中的实例的关系,因为Core Data不支持这种关系。 如果需要在不同商店中的实体之间创建关系,则通常使用获取的属性。 问:一个持久性存储协调器可以有多少个托管对象模型? 每个模型我们只能有一个持久性存储协调器。 问:持久性存储的类型? 问:持久存储安全性有哪些限制? Apple Docs说:Core Data 不保证不受信任来源(与内部生成的存储相对) 的持久存储的安全性,并且无法检测文件是否已被恶意修改 。 SQLite存储提供的安全性比XML和二进制存储好一些,但是不应将其固有地视为安全的 。 还应注意,元数据中存储的数据可能会独立于存储数据而被篡改。 为确保数据安全,请使用加密磁盘映像之类的技术 。 问:核心数据中的并发类型是什么? 两种并发模式NSMainQueueConcurrencyType和NSPrivateQueueConcurrencyType 。 NSMainQueueConcurrencyType特别用于您的应用程序界面,并且只能在应用程序的主队列上使用。 NSPrivateQueueConcurrencyType配置在初始化时创建自己的队列,并且只能在该队列上使用。 因为该队列是私有的,并且在NSManagedObjectContext实例的内部,所以只能通过performBlock:和performBlockAndWait:方法对其进行访问。 当您使用NSPersistentContainer ,viewContext属性配置为NSMainQueueConcurrencyType上下文,而与performBackgroundTask:和newBackgroundContext关联的上下文配置为NSPrivateQueueConcurrencyType 。 […]
在这篇简短的文章中,我们将向您解释Cloxee的优点是什么,以及为什么它是值得在iPhone和iPad上使用的应用程序。 为了给您一个更好的主意,我们提供了一些gif,图像,甚至是应用程序的屏幕截图。 如文章标题所示,Cloxee是一个iOS倒计时应用程序和小部件。 很简单的想法。 如您所料,App Store和Play Store上都有大量倒计时应用程序。 但是我们想做些更复杂的事情。 因此,我们提出了其他应用程序所缺少的许多功能。 首先,在创建倒计时时,您可以从各种不同的设计,字体,过滤器和颜色中进行选择。 您可以从相机胶卷,我们的图库或第三方数据库中选择背景图像。 我们添加了所有这些功能,以确保Cloxee应用程序显示的倒计时效果出色,并且我们对结果感到满意。 一旦完成编辑,就有可能通过Instagram,Facebook和Twitter分享倒数计时。 它可以是照片(静态)形式,也可以是10秒视频形式,因此您的倒数计时似乎实际上是在倒计时。 除此之外,您所有的倒数都会保存在您的个人资料中,与其他倒数应用不同,Cloxee允许您免费存储无限数量的倒数。 那不是全部。 Cloxee还支持(这是我们最喜欢的功能)小部件,因此您可以将实时倒数作为小部件。 还有很多工作要做。 在接下来的几个月中,您会期待诸如AI的更新,它将根据背景自动选择最合适的样式和颜色。 此外,我们将不断在此之上添加更多的字体和动画样式。 敬请关注。 如果您有任何反馈意见,请随时通过hello@cloxee.com与我们联系。 发布日期: 7/7/2018 价格:免费 iTunes链接 :https://itunes.apple.com/us/app/cloxee/id1233654728?ls=1&mt=8 网址 :https://cloxee.com Cloxee是一款应用程序,可让您倒计时与自己相关的事件。 生日,周年纪念日,节假日,随你便。 Cloxee可帮助您倒计时并记住那些特殊时刻。 特征: 自定义背景:使用您自己的照片作为背景创建倒数计时。 如果您没有照片,可以从我们的画廊中选择照片或搜索我们的数据库。 自定义倒数:您可以从多种样式,字体,颜色和过滤器中进行选择。 分享您的倒计时:我们非常轻松地与您的朋友分享倒计时。 倒计时可以在Facebook,Instagram和Twitter上共享。 您还可以将倒计时保存到手机中并直接发送。 无限倒计时:您所有的倒计时都将保存在您的个人资料中。 您可以根据需要设置任意数量的倒计时。 提醒:您可以设置倒计时结束时要通知的提醒。 倒数计时小工具:您可以将任何倒数计时设置为小部件,从而无需转到应用即可检查实时倒数计时。 如果您有任何反馈意见,请随时通过hello@cloxee.com与我们联系。
Android和iOS应用程序开发之间的选择取决于您所关注的用户。 如果您希望与不介意在应用程序订阅或应用程序内购买上花钱的高收入人士联系,或者希望与大型组织的高层管理人员联系,那么iOS应用程序开发将是正确的选择。 完成此步骤后,就该考虑如何更流畅,更快速地创建开发流程了。 iOS应用程序开发服务的专业提供商使用了大量工具,可以帮助您完成应用程序的整个生命周期。 这里有以下工具: 您应该用于iOS App开发的工具 1. Xcode:开发人员工具可在Apple创建的集成开发环境(IDE)中访问。 这些工具用于使用C,C和Objective-C作为编程语言为各种Apple设备构建应用程序。 Xcode能够识别编码和逻辑错误,从而帮助他们在编写代码的过程中得到解决。 2. Jazzy:这是一个开放源代码的iOS应用程序开发工具,为以Swift和Objective-C编写的代码提供Apple风格的文档。 Jazzy构建文档非常清晰且易于浏览。 3.首次发布 -原生iOS应用程序:开发人员可以利用首次发布进行代码级别更改,并直接将SDK包含到实时iOS应用程序中,替代等待App Store批准以解决问题并在应用程序中创建修改的方法。 4. Gitter:这是一个 iOS应用开发工具,特别适合开发人员。 它建立在GitHub之上,并提供无限的公共和私人聊天室,使组织内部的紧密集成变得容易。 5. Crayons: Crayon是一个Xcode插件,通过提供对代码中定义的自定义颜色的访问,以直接在Interface Builder中使用,从而改善了颜色的使用。 6. Swift Express:这是一个用Swift编写的简单而强大的工具,可帮助开发人员在处理项目依赖项的同时运行应用程序。 有关更多查询,请联系 我们的iOS专业知识 。
使用MBCircularProgressBa r — https://github.com/MatiBot/MBCircularProgressBar来自Interface Builder Swift的圆形,可动画制作且高度可定制的进度条,使用吊舱配件MBCircularProgressBar安装Cocoapods terminal.pod“ MBCircularProgressBar” 那—安装pod文件的简单步骤— 打开终端 终端上的命令转到项目文件夹CD路径 在终端上设置项目路径。 命令:pod初始化 打开pod文件— open -e podfile 在pod文件中添加了in:pod“ MBCircularProgressBar” 命令:Pod安装 关闭Xcode项目 从终端打开您的项目 命令:打开PodDemos.xcworkspace 操作StoryBoard之后,现在将UIView拖到Storyboard中的viewController上 或设置UIView约束的宽度,高度或垂直或马尾空间,并在StoryBoard中设置类MBCircularProgressBarView。 打开Atribute检查器并根据需要自定义进度栏 现在打开ViewController.swift文件导入UIKit导入MBCircularProgressBar ViewController类:UIViewController { @IBOutlet周var progresssView:MBCircularProgressBarView! 覆盖func viewDidLoad(){supper.viewDidLoad()self.progresssView.value = 0}覆盖func viewWillAppear(){UIView.animate(withDuration:10.0){self.progresssView.value = 60}} } 最初发布在 iosdeveloperlive.blogspot.com上 。
如果要开发高质量的iOS App。 不要直接开始编写代码。 如果您认为没有设计,计划,估算,则可以生产出高质量的应用程序。 你想错了。 您将失去宝贵的时间。 因此,在开始编写iOS应用程序之前,请遵循以下步骤。 1)了解要求并定义应用范围。 在需求收集期间提出您的观点。 询问您在功能和设计级别协商期间观察到的所有内容。 记下所有关键和功能点。 验证App设备平台iOS / iPad / TV-OS / I-Watch。 另一件事是确认该应用程序仅处于纵向或纵向和横向布局。 了解流程并与项目经理(Mediator)和客户确认。 2)创建设计– 线框,模型和原型应在可视化工具或图形设计器的帮助下进行定义。 正如我们认为的那样,这并不简单,根据客户要求设计和原型化应用程序是非常困难且至关重要的任务。 并在开始编写代码之前先向客户和项目经理确认。 一旦您的设计被他们确认。 与项目经理,后端开发人员,图形设计人员,测试人员和android开发人员一起生成适当的成本和时间估算计划。 一旦您从客户那里收到绿色信号,便将您的初步或最终估算发送给客户,以进行进一步的操作。 注—在给出最终时间估计的同时,添加一个缓冲区来解释风险并解决不可预测的行为(错误)。 3)收集所需的资源- 收集所有需要的资源,例如: 1)Apple开发人员帐户,置备配置文件和证书。 2)登录帐户凭据(Facebook Gmail等) 3)推送通知服务提供商凭据。 (如果需要的话) 4)应用程序图标和初始屏幕资产。 5)其他图片和资产。 4)分配资源和人力– 开始之前,请验证客户端提供的凭据和信息是对还是错。您应该至少拥有一台iPhone和iPad设备以进行测试。 然后考虑可用资源制定计划。 将项目模块化为子任务。 将任务分配给开发人员和设计人员。 5)升级Mac OS和最新的Xcode — 在开始编码之前,您必须先更新Mac Os,然后为了应用程序而更新Xcode,才能在当前版本的iOS上使用该代码。 示例—如果您在Xcode 8.3上制作应用,则iOS 11将不支持该应用。 注—首选快速编写代码,而不是目标c。 现在,您可以进一步进行编码了。 快乐的编码。 如果您发现有用的内容,请发表评论并分享该文章。 文章来源-来自我的个人博客-http://ios-support.blogspot.com/
技术日新月异,在电子商务,旅游,酒店等各个领域都展现出巨大的潜力。 iOS世界中的这些技术进步为我们提供了一种有效的共享方式,以及通过虚拟空间中的用户网络存储数据的方式。 ChromeInfotech理解了多个OS零碎带来的iOS开发挑战,以及iOS的硬件和软件如此多样化的事实并没有使开发与它们完美匹配的应用变得更加容易。 但是现在,iOS App开发技术已成为其他领域的重要组成部分,例如:提高数据分析的透明度,在线和离线营销模式的进步,减少网络安全风险以及将与有价值数据损坏相关的威胁最小化。 ChromeInfotech-2018年斯德哥尔摩最佳iOS应用开发人员 我们在ChromeInfotech拥有超过十年的信息技术和服务领域的丰富经验,并跻身于顶级移动应用程序开发公司之列。 ChromeInfotech团队在iOS应用程序开发方面所做的出色工作已使我们成为斯德哥尔摩及世界其他地区的顶级iOS应用程序开发公司。 我们与一支由高技能的iOS应用程序开发人员,测试人员和iOS应用程序设计人员组成的团队,他们随时准备应对任何挑战。 从项目开始以来,我们就遵循以客户为中心的方法,以更好地了解客户对项目的要求。 为什么选择ChromeInfotech ChromeInfotech成立于2010年,已跻身美国乃至全球最可靠,最著名的移动应用程序开发商之列。 该公司开发了一系列应用程序,从娱乐,点播到医疗保健和教育,一应俱全。 早于时间就开发和发布了500多个应用程序; ChromeInfotech通过将每个应用程序创意转换为特色应用程序,不断超越行业标准。 有一个应用创意,请立即联系我们! 想要与一家值得信赖且经过认证的移动应用开发公司合作,可以通过sales@chromeinfotech.com与ChromeInfotech取得联系或获得免费报价。 ChromeInfotech是最好的移动应用开发公司,以合理的价格提供创新的IT解决方案。
通过使用强大的技术来使您的视觉娱乐。 增强现实技术是一种如此有用的技术,它与您周围的整个世界都在发挥作用。iOS引入了ARKit框架,以消除虚拟世界与现实世界之间的界线。 ARKit可与iOS设备的相机配合使用,在环境中扫描图像和对象,并在真实空间中放置3D模型并使其适合放置。ARKit主要在AR应用程序的幕后进行三项基本工作:跟踪,场景理解和渲染。 ARKit的核心是让您将对象拖放到环境中,并使用触摸屏对其进行操作。 在WWDC 2018上,Apple宣布了ARKit 2.0版中的许多改进。 这些改进中的第一个改进是USDZ,这是由Apple和迪士尼的Pixar为ARKit开发的一种新文件格式,可简化创建和共享增强现实内容的过程。 Adobe的Creative Cloud软件套件将本地支持新格式,以允许与Photoshop等通用程序兼容。 ARKit 2的新增功能– WWDC 2018 –视频– Apple Developer ARKit 2使开发生动的增强现实体验变得容易,并使应用程序可以在……中与现实世界进行交互。 developer.apple.com 俗话说,探索越多,对它的迷恋就越多。这在增强现实中发生了。由宜家家具应用程序开发。几天后我就通过了。感谢Google !!! 这款家具应用程序是根据“购买前将其带回家”的概念实施的。您确实很喜欢家具,但是不确定是否适合居住区域。没问题,ARKit可以提供解决方案。确定水平面,一旦检测到我们将插入家具(椅子),我们可以通过捏和缩放来缩放它。如果椅子不动,这有什么用,是的,我们将使用手势旋转椅子并移动它并使其适合环境 让我们看看该应用程序是如何工作的。 在探索ARKit框架之前,建议先了解一下SceneKit。在Xcode中选择“增强型”应用程序时,默认的内容技术是SceneKit。要了解更多信息, 场景工具箱·objc.io objc.io出版有关iOS和OS X开发的高级技术和实践的书籍 www.objc.io 在Xcode中,默认情况下,我们将看到ship.scn。 如果您不太确定这是如何工作的,请使用默认代码运行该应用,然后您可以在相机视图中看到太空飞船。我们的项目中不需要ship.scn。只需继续将其删除即可现在,我们需要我们的家具模型,某种椅子,桌子或沙发。 专业人士的3D模型:: TurboSquid 在我们庞大的汽车,人物,纹理,建筑模型等在线目录中,可以为您的项目找到3D模型。 www.turbosquid.com TurboSquid提供了惊人的3D对象,您可以免费下载它们。(我选择了.dae collada格式的椅子)。将图像放入您的项目中。 项目设置完成。现在,有趣的部分开始了。编码时间!!! 首先,放置物体需要检测平面,在这种情况下它应该是水平的。平面检测是使用didAdd委托方法和’ ARPlaneAnchor ‘完成的。到SceneView。 获取触摸识别器的位置,使用hitTest在捕获的图像中搜索与SceneView相对应的真实对象,并将椅子模型添加到SCNScene。 如果您的椅子没有正确放置在平面上,请尝试将椅子的视角更改为正面,然后使用Xcode节点检查器转换编辑器。 而已 !!! 看起来很简单。运行项目,现在可以将椅子模型放置在平面上。使用进度指示器让用户知道是否检测到了平面这是使用ARKit将3D对象模型添加到水平面的基本部分和SceneKit。尝试使用其他手势添加旋转,移动,放大和缩小。 参考文献: ARKit教程:了解和实现3D对象 具有出色的视觉元素可以为您的应用赋予独特的个性。 在本教程中,我们将研究3D对象… www.appcoda.com ARKit:将3D对象添加到场景中 在第一部分和第二部分中,我们介绍了如何开始使用ARKit,以及如何检测您周围的平面。 有什么好处… arvindravi.com