Tag: 迅捷

Criando um jogo em ARKit

苹果公司在房地产市场上的竞争 不适用WWDC,您可以在WWCS的所有广告中找到所需的信息,也可以在gentle中购买:AR套件! 一份由新书目许可的实用程序,可用于实际使用中的互感器。 在Xcode 9和iOS 11上运行Beta版本的功能,在AR套件中运行Beta版本的功能。 您可以下载免费的试用版dos dois软件,也可以下载没有链接的软件。 https://developer.apple.com/download/ 使用Xcode 9可以更安全地使用新的实用程序创建模板,并且可以使用以下示例代码: 您可以使用工具包中的SceneKit,SpriteKit或金属渲染器,也可以使用推荐的工具。 Nesse教程,SireKit实用工具。 模板实用程序可用于重要的配置: 艺术品 Essa pastaéo local onde devem ser colocados todos os arquivos de modelos 3D,cenas e texturas。 可以在模板上添加演示模板。 主板 故事板的负责人apresenta uma ViewController com uma ARSCNView octoando toda a tela。 Esse elementoéuma SceneKit视图在Realmentade Aumentada,许可使用图像的共同作用。 信息清单 Jáque utilizaremos acémeranesse aplicativo,许可列表j possui a propriedade隐私—相机使用说明configurada(通过esse模板通过ésétemdevéessa propriedade […]

iOS:使用ABGaugeViewKit在Swift 4中创建GaugeView / Speedometer

在本文中,我们将使用具有动态功能的ABGaugeViewKit在iOS XCode中实现轻量级的GaugeView。 N个弧,每个弧具有自定义区域。 可定制的整体弧角。 很棒的动画。 简单轻巧。 在XCode中创建一个新项目。 在您的项目中添加ABGaugeViewKit。 使用情节提要准备ABGaugeView。 设置参数值之前要记住的事情。(这一点很重要) 1.在XCode中创建一个新项目 打开XCode,转到“文件”>“新建”>“项目” 选择“ Single View App”,如图像编号所示。 1,然后单击下一步。 然后,添加产品名称。 您可以添加自己的产品名称。 出于教程目的,我们给它命名为“ ABGaugeExample”,然后单击“下一步”。 2.在项目中添加ABGaugeViewKit 在这一步中,我们将Podfile添加到我们的项目中。 启动Terminal并转到您项目的目录。 键入pod init ,然后在终端中按Enter。 此命令将在您的项目中创建podfile。 键入open podfile ,然后在终端中按Enter。 此命令将在TextEditor中打开podfile。 在Podfile中,添加> pod’ABGaugeViewKit'<,如图中的图片所示。 2 保存podfile并关闭您的项目。 转到终端,然后输入pod install 。 此命令将安装框架。 3.使用情节提要准备ABGaugeView。 框架安装完成后,转到项目目录并打开YourProjectName.workspace。 转到Main.stoyboard并将UIView添加到ViewController。 添加相同的宽度和高度约束,例如。 如图像编号240所示。 3。 如图中所示,添加水平和垂直居中约束。 4。 转到Identity Inspector并将类名称更改为ABGaugeView,如图像No.所示。 5, 转到“属性”检查器,以更改“量具”视图的属性,例如以下属性颜色代码,区域,弧角,针头颜色,针头值,应用阴影,圆帽,眨眼动画,圆形颜色,阴影颜色。 颜色代码 :您应该在gaugeView中添加所需颜色的十六进制代码集,并用逗号组合。 面积 […]

作法:建立.gitignore档案

.gitignore告诉git它应该忽略哪些文件(或模式)。 通常用于避免从工作目录中提交对其他协作者无用的临时文件,例如编译产品,IDE创建的临时文件等。 要创建您的.gitignore文件,您可以访问以下网站:www.gitignore.io。 Gitignore.io将生成一个网页,稍后您将需要该URL。 生成文件后,请按照以下步骤在git上对其进行配置。 打开终端并找到您项目的.git: 2.使用wget -O .gitignore’generatedURL’创建.gitignore文件。 如果尚未安装wget,请通过自制软件安装。 现在,您的.gitignore文件已配置并准备提交。

ARKit Pods — FocusNode

这是一篇非常简短的文章,解释了如何实现我创建的名为FocusNode的Pod。 实际上,这实际上与Apple在其ARKit演示中使用的类和代码完全相同,我只是拆分了该类并将其打包,以便可以轻松地在我的ARKit项目中包含和使用它,并认为其他人可能也希望这样做。 此Pod的存储库位于: maxxfrazer / ARKit-FocusNode FocusSquare`类直接取自Apple的ARKit示例,并打包为任何人都可以轻松使用。 … github.com 假设您已经设置了ARKit项目,请创建一个包含pod ‘FocusNode’ 。 整个过程应类似于以下内容: 项目“ PROJECT.xcodeproj” 平台:ios,“ 12.0” 目标“项目” use_frameworks! 吊舱 “ FocusNode” 结束 跳到ViewController.swift文件(在终端中运行pod install后创建的工作区中)并import FocusNode 。 完成之后,您应该可以访问新类FocusSquare ,这将创建一个具有基本方形UI的对象。 将其附加到场景图的rootNode,并将FocusSquare的委托设置为sceneView。 它看起来应该像这样: 让 focusNode = FocusSquare() 覆盖 func viewDidLoad(){ … … 自我 .focusNode.viewDelegate = sceneView sceneView.scene.rootNode.addChildNode( 自我 .focusNode) } 为了使其正常工作,您需要设置配置以检测水平和垂直平面。 为此,您的配置创建将看起来像这样,然后在会话上运行。 让配置= ARWorldTrackingConfiguration() configuration.planeDetection = [。 […]

RxSwift反向可观察又称为双向绑定

当我们听到反应式编程时,我们通常会考虑可观察序列的侦听器,转换器和组合数据,并对变化做出反应。 所以.. RxSwift是关于将数据从业务逻辑传递到视图的,对吗? 但是双向传递事件如何 TextField 可观察的 TextField 我们将研究以下两个用例: 绑定2个文本字段并订阅彼此的text控件属性(当更改其中一个文本时,另一个将自动更新) 进入下一个级别,并制作姓氏/名字/全名表格,如上图所示进行更新 让我们开始吧! 在开始编码之前,有时我想检查一下我是否没有重新发明热水-我们是否已有一些现有的库或完成与该主题相关的其他工作? 而且…我找到了这个图书馆 RxSwiftCommunity / RxBiBinding 反应性双向绑定。 通过在GitHub上创建一个帐户来为RxSwiftCommunity / RxBiBinding开发做出贡献。 github.com 表现出色。 我只需要像这样连接两个文本字段 这是在名字和姓氏以及全名文本字段之间进行双向绑定的完整代码(例如顶部的动画gif) 当我们在textFirst和textSecond输入文本时,姓氏字段( textFull )将使用串联的姓氏和姓氏文本进行更新。 链接到示例存储库https://github.com/vaderdan/Example2WayBinding

我们如何解析BSON不会产生开销性能

BSON是一个鲜为人知的图书馆,经常使用。 它是MongoKitten的核心,并且BSON规范一直被所有MongoDB用户使用。 我们开发了一个BSON库,它通过利用规范细节和我们能想到的每一个技巧,都胜过其他所有库。 序列化 在我们的BSON库中,序列化几乎不影响性能。 俩? 对于每种可能的操作,我们创建了一种专门执行该操作的专门算法。 两个操作可能共享相同的基本元数据要求,例如元素的位置。 为此,我们保留了文档中所有元素元数据的缓存。 这样,当一个操作第一次遇到一个元素时,其他操作就不需要花费时间了。 这样,我们可以高效地进行解析,并始终保持所有数据序列化。 这也意味着我们绝不会反序列化甚至读取不需要的数据。 这样可以节省CPU性能,内存副本和内存使用率,这是该库独有的。 利用规范 BSON的规范(http://bsonspec.org)具有始终位于消息核心的元素。 文献。 文档从Int32的整个长度开始,以空终止符结束。 规范中存储了长度和空终止符的原因是为了提高解析性能。 BSON可以递归嵌套文档。 因此,如果您想跳到同一级别的下一个元素,则这两个属性可以提高解析性能。 但是,如果要将元素添加到文档,则需要删除null终止符,添加该元素,然后再次添加null终止符。 并且在文档的内容更改之后,将执行其他操作以更新文档的长度。 这是没有问题的,直到您意识到此时添加5个属性会花费15个额外的堆操作。 而且堆非常昂贵。 因此,我们从顶级文档的内部存储中删除了Int32和null终止符。 这使这些操作的成本降低了四倍。 解析/提取 BSON的数据始终是序列化的,因此提取需要即时进行。 我们通过懒惰地搜索和反序列化文档中的信息来做到这一点。 在您要求我们提供某些信息之前,我们不知道文件的内容。 届时,我们将有效地解析文档,直到找到所需的信息。 这样,我们解析的内容不会超出我们的需要。 { “ username”:“ Joannis”, “年龄”:21岁, “男”:是的, “ admin”:是的, “权限”:[“全部”,“更多”,“无限”] } 如果您要访问键“用户名”,则将仅查看和缓存此“用户名”键,因为它是文档中的第一个实体。 不会扫描,缓存或查看“年龄”,“男性”,“管理员”和“权限”。 现在,当您访问male ,解析器将在username之后恢复并找到age而不反序列化值。 接下来,找到male ,将其击中,反序列化该值,停止扫描并返回该值。 现在,如果您请求age ,它已经知道age在哪里并反序列化此信息。 如果您寻找nonexistingkey ,它将一直扫描直到permissions不匹配为止,并将顶级文档标记为“完全扫描”,因此无需再次扫描。 防止将来无用的扫描无法阅读文档末尾。 如果由于某种原因您需要访问权限的第二个[1]属性,它根本不会提取permissions文档。 而是以递归的方式开始扫描permissions内的值,就像使用顶级文档一样。 […]

完美:服务器端Swift —处理请求

本指南从上一个地方继续讲起。 我们准备处理对我们应用程序的请求。 目前,我们已经在处理对我们应用的GET请求,因为PerfectTemplate添加了路由,以URI响应“ /”。 如果您继续阅读本指南,我们将添加一条新的POST路线,以了解如何进行操作,并为每本指南(一个功能齐全的API)将要构建的内容奠定基础,因此,请开始编写代码! 添加新路线 由于我们在上一指南中已经进行了重构,因此添加路由应该非常简单。 如果您将Xcode用作IDE(集成开发环境)并且至少已经构建了项目一次,则您应该有权使用命令自动完成功能。 在路线文件AppRoutes.swift中 ,在带有初始路线调用的行之后,开始键入route.add ,您应该获得添加新路线的可用方法。 添加新路由最有用的方法是列表中的最后两个。 add(方法:HTTPMethod,uri:字符串,处理程序:Requesthandler) 让我们先看一下最后一个,您可以在其中指定所需的方法 (CONNECT,DELETE,GET,HEAD,OPTIONS,POST,PUT或TRACE), uri应该是字符串 ,最后是指定处理程序,该路线将在何时被调用。 route.add(方法:.post,uri:“ /”,处理程序:homeHandler) 添加(方法:HTTPMethod,URIS:[String],处理程序:Requesthandler) 自动完成列表中的最后一个选项是另一个有趣的选项,与上面的选项相同,但是变化很小……您可以指定将由指定的路由处理程序处理的URI数组-该数组应为字符串数组。 route.add(方法:.post,uris:[“ /”,“ / home”],处理程序:homeHandler) 当您有多个路由应该具有相同的业务逻辑,或者至少与其他路由具有相同的业务逻辑时,这非常方便。 好的,足够多的聊天,让我们添加一条路由,该路由将对原始URI“ /”上的POST方法作出反应,并使用名为homePostHandler的处理程序处理请求。 您的路线文件现在应如下所示: 添加新路线后,您会遇到一些错误,这是因为尚未创建新的处理程序-很好,我们接下来将其添加。 处理传入的请求 由于新路由也用于“ /” URI,因此将逻辑与上一个路由保存在同一文件中,而我正在谈论homeHandler.swift 。 转到该文件并添加我们的新处理程序(就像已经存在的上一个处理程序一样) func homePostHandler(request:HTTPRequest,_ response:HTTPResponse){ } 为了使Perfect知道您已经完成了对数据的处理并准备显示返回的任何内容,需要在完成后调用response.completed()方法。 为了测试我们的路由是否正确处理,我们将在调用completed()方法之前向处理程序添加一个打印命令。 注意:从一开始就添加它是一个好习惯,这将允许您在添加任何类型的业务逻辑之前测试路由。 func homePostHandler(request:HTTPRequest,_ response:HTTPResponse){ 打印(“哦,哦,刚才有人叫/使用POST方法!!”) response.completed() } 让我们测试我们的新路线,只是要确保我们没有引入任何错误/错误。 编译并运行您的应用程序,并使用curl或任何REST客户端创建对“ /”的POST请求( 我将使用curl )。 curl […]

2016年可可元首会议

西班牙国家大剧院 内塞邮报新闻发布会。 Irei apenas dissertar e colocar a minhaopiniãosoque o vivi vi vivi em dois dias deevento。 每天从02/12到8月12日从萨巴多出发,到Mercado livre,从Osasco到Melicidade,从国营到可可黑德州的一次礼遇。 您可以使用Melicidade。 O本地 萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·阿尔萨斯·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·萨尔瓦多·纳尔科斯·乌尼达斯·萨尔瓦多·纳尔科斯·尤尼达斯,3003年。 Ládentroéoutro mundo,lugar muito bonito,com cadeiras e redes para se acomodar debaixo deárvores,refeitórioeváriassalas dereuniãonas quais foram realizados os workshops。 当地的多米诺骨肉休闲餐厅,塔玛尼奥·梅卡多·利弗雷博物馆,马萨·莱姆布拉·尤西斯·迪卡·菲萨·菲卡在奥萨斯科? Nem todas作为Osascosão遗址的遗迹,主要是由毛利人(émaioriaé)造成的。 kk 在圣保罗教堂中的教堂,并在圣保罗教堂内加油打气。 Porra,里约热内卢,e eunãoandaria por aqui。 (Calebe Emerick) 本地雪茄,雪茄和雪茄的销售,当地的雪茄配送,本地化和本地化。 当地的人事通讯社和当地人报到。 E valeu […]

在iOS应用中管理环境

对于开发团队来说,每个项目都有多个环境是很常见的事情。 开发人员使用服务器的开发版本。 质量检查先检查开发版本,然后再检查暂存版本,简称为候选发布版本。 然后,所有这些都最终发布。 对于iOS应用程序,您可以在为每种环境创建单独的应用程序以及自定义一个应用程序以提供环境切换选项之间进行选择。 这两种方法都有优点和缺点。 每个环境“ + ”的单独应用: 您可以完全控制每个环境设置 您可以同时安装3–4-N个应用程序,只需在一个应用程序之间切换即可测试它们(无需重新登录或执行任何其他操作) 通过在构建时修改显示名称或图标,您可以轻松了解哪个应用程序实例适用于哪种环境 每个环境“ – ”的单独应用: 您将必须处理每个应用程序的配置文件和证书,并使其保持最新状态 如果您使用推送通知并且仍然不使用通用身份验证密钥,则最终将导致混乱的推送通知证书和沙箱/生产问题 构建版本将很难处理。 每个构建都是唯一的,您将无法检查确切构建在所需环境中的行为。 同时至少3个应用实例。 您添加了另一个环境(具有长期功能)–您将拥有另一个应用程序 Fabric / HockeyApp / TestFlight会很拥挤 现在,让我们看一下“一个应用程序-N环境”方法。 您可以通过在应用程序内部实现自己的模块(通过摇动手势/双击屏幕上的某个位置来调用/只需根据服务器上的策略显示一个按钮)来调用该模块。 或者,您可以简单地使用Settings.bundle和标准应用程序设置。 无论哪种方式,让我们总结一下优缺点。 一个适用于不同环境“ – ”的应用程序: 您将无法同时使用同一应用的多个实例来检查相同的行为 每次环境更改后,您都必须重新登录(即使执行此过程) 如果从开发者切换到产品,反之亦然,推送通知可能仍无法正常工作 Fabric临时版本无法再安装在发布/临时版本上,您必须删除该应用程序的现有实例,然后从Fabric Beta应用程序重新安装 您必须管理发行版本的环境首选项可用性,如果您使用testflight进行登台,这可能会很棘手(有人可能会错误地发布错误的版本) 一个适用于不同环境“ + ”的应用程序: 不用担心配置文件 Appstore Connect和Fabric / HockeyApp中的苗条和简单项目结构 轻松的环境管理(具有预定义的选项和/或URL的自定义选项) 您具有一个长期功能,该功能在开发过程中仍然存在于另一个分支上,仍然需要对其进行测试吗? 只需将新配置添加到您的设置中,然后进行重建即可开始 您可以检查您的开发版本如何与当前的生产API一起使用,或者您的暂存(候选版本)版本将如何管理仍在开发中的新API更改 简单的CI&CD脚本 自定义应用程序模块可以派上用场,但需要一些开发。 让我们关注一种更简单的方法-iOS设置中的应用程序首选项。 首先,您需要为项目创建并注册一个Settings.bundle文件。 […]

在Swift中复制

如果您想进行完整的iOS培训,可以通过以下详细信息与我联系,我会使用目标C或Swift提供实时iOS应用培训 skype:alok.upadhyay32 邮件:meiosdose@gmail.com 应用程式:+ 91–7838552946 嘿,这是我的第一篇文章,是的,我做到了! 我们将涵盖 复制 深拷贝 浅拷贝 参考类型的深层复制 写时复制(COW) 我将谈论快速复制对象。 复制可以通过两种方式进行: 复制内容和复制参考 。 复制内容也称为Deep Copy 。 Deep Copy适用于值类型。 例如结构,数组,字典,集合,字符串等。 复制参考也称为浅复制。 浅复制适用于 参考类型。 例如类。 注 —如何创建引用类型的深层副本? 引用类型的默认副本为浅表副本。 我们还可以通过确认copy(with zone: NSZone? = nil) -> Any.并实现copy(with zone: NSZone? = nil) -> Any.来创建引用类型的深层副本copy(with zone: NSZone? = nil) -> Any. 深度复制示例: //首先,我们需要一个值类型。 让我们来个结构。 / *具有变量personName和personAge的人员结构* / struct […]