Tag: Xcode 9

WWDC 2017:平台国情咨文主题演讲

苹果宣布了一系列新功能以帮助应用程序分发。 显着的改进是分阶段发行,该版本将使开发人员几乎可以在Google Play分阶段推出时逐步部署其应用程序的更新。 iOS 11将以32位应用程序结尾。 从2018年1月开始,所有将提交到iOS应用商店的新应用都将需要64位,并且在2018年6月还将包括更新。 由于iOS macOS将类似地淘汰32位应用程序,因此High Sierra是最后一个完全支持32位应用程序的版本。 斯威夫特游乐场 如今,迅速的游乐场已被超过一百万的用户使用。 在WWDC发布1.5版本的应用程序前一周,您可以与鹦鹉,Sphero甚至LEGOMINDSTORMS®等品牌的无人机和机器人进行互动。 您可以找到一个新的附件选项卡,可以在其中找到准备与此机器人一起使用的示例。 在将随iOS 11一起发布的2.0版本中,将添加8个新的本地化版本,开发人员,教师和组织可以创建操场上供稿,以帮助与Swift Playgrounds应用程序用户轻松共享内容。 Xcode 9 更好的源代码编辑器 当他们谈论Xcode的新功能时,它始终是我最好的部分,而今年我们有很多新东西。 首先,源代码编辑器完全是用Swift重写的,现在它包含一个markdown编辑器,突出显示问题的布局正在重新考虑,以使其更适合代码,并且最终可以一次解决所有问题。 现在,如果您在按CMD的同时单击某个地方,Xcode 9现在也会提供更好的代码重构,它将显示一个菜单,其中包含可能的重构和与所选代码相关的操作: 另一件事是像现在Xcode高亮逻辑组只是按CMD并传递了func或class关键字: 向类添加协议已经存在一个问题,该问题将实现非可选方法: 同样,CMD + / CMD —现在将增加和减小字体大小。 对于仍在使用Objective-C的人们,他们迅速使用了@availabe关键字。 现在,您的项目也有了组组织,它将与您的文件夹匹配。 Github也直接集成在Xcode中。 苹果团队将使转换引擎成为开放源代码,任何开发人员都可以轻松地添加新的重构功能。 更好的迅捷 他们删除了所需的characters关键字来访问字符串的字符,而不是字符串是可范围替换的双向Collections。 在整个iOS上拖放 您可以在应用程序之间以及同一应用程序内进行拖放。 它会自动用于UITextfield和UIWebviews。 在其他情况下,仅使用两个UICollection和UITableview委托方法即可轻松实现,添加它可能是向列表添加重新排序支持的一种好方法。 拖放所涉及的数据无法由其他应用访问,因为期望该应用将删除该内容。 拖放的所有部分都是可定制的,动画,数据模型… 都是关于图片的 iOS摄像头现在可以检测QR码,并带有通用链接的通知。 苹果公司向我们展示了一种新的压缩格式: HEVC ,视频和照片的压缩率是原来的2 倍 。 结合起来,有一个名为HEIF的新图像容器,可以由不同的资产类型组成。 HEIF是ISO标准。 深度 :应用程序现在可以访问HEIF图像的深度图 视觉 :您可以直接从相机进行面部,界标,矩形,文本,条形码的检测,还可以进行一些对象跟踪,并且使用核心ML,您可以使用机器学习模型来帮助进行对象识别。 […]

Xcode机器人fast y fastlane🚀Parte 1

安提斯·纳达·埃斯泰斯特没有任何通俗的口译服务,拉美地区的拉美地区和拉美地区的独奏者,独奏者和独立军团。 解决因错误而导致的错误。 总体配置和维护的基本知识请一位熟练的工程师提交一份精通的,精湛的手册。

扩展👜

大家好,希望生活美好! 😁好吧,今天我想带来更多放松。 我每天都在使用这些扩展名,我想……为什么不共享? 水平摇动动画 结果 垂直摇动动画 结果 设置圆角 设置视图边框 产生眨眼般的效果 我刚刚通过更改视图的alpha属性制作了淡入淡出动画! 太基础了 💁🏻 结果 而且只有淡出才会像⬇️(基于上面的代码)。 我在这里没有给出详细的描述,因为所有内容都是不言自明的,希望您会发现它们很方便并且对您有所帮助🙌 让我们进行协作,使此存储库非常足智多谋,因此,如果您要添加一些东西,例如基本上扩展任何东西,请分叉它! 樱桃/扩展名 扩展-少数扩展使生活变得轻松! 🛀🏼 github.com 祝你有美好的一天️

在iOS Swift 3中使用socket.io

通常,大多数iOS / Android应用程序都与服务器通信以交换数据。 服务器实现并提供RESTful API,应用程序可使用该API进行通信。 当应用需要将数据发送到服务器或从服务器获取数据时,它会发出正确的请求,并在一段时间后返回数据。 在应用运行期间,这种情况会发生多次。 幸运的是,当有必要立即从服务器接收数据时(每次这些数据可用时),而无需让应用程序向服务器发送任何请求, socket.io是更好的解决方案。 传统上,使用流行的Web应用程序堆栈(例如LAMP)编写实时应用程序非常困难,这涉及轮询服务器的更改,跟踪时间戳,并且比预期的要慢得多。 Socket.IO是一个用于实时Web应用程序(即时通讯程序,推送通知,在线游戏)的JavaScript库。 传统上,套接字是围绕其构建大多数实时系统的解决方案,可在客户端和服务器之间提供双向通信通道。 这意味着服务器可以将消息推送到客户端。 每当发生事件时,其想法是服务器将获取该事件并将其推送到相关的已连接客户端。 它使开发人员可以发送和接收数据,而不必担心跨浏览器的兼容性。 套接字通信依赖于客户端-服务器逻辑,其中服务器与客户端之间始终存在持久连接。 更准确地说,服务器“打开”一个专用端口,客户端可以通过该端口连接到该端口。 一旦发生这种情况,所有连接的应用程序都可以将消息发送到该端口(外发消息),并侦听任何传入消息。 由于这是连接到套接字时的默认行为,因此服务器上的每个已连接客户端都将自动获取其消息,而无需任何其他请求。 最重要的是,当服务器将消息发送到该端口时,收件人客户端将立即收到该消息,因此它们可以立即采取任何进一步的措施(例如,更新新闻提要)。 尽管Socket.IO主要是为Web应用程序设计的,但它提供了iOS的库| Android | 可以立即集成到项目中的Java 。 工作流程 首先,我创建了SocketIOManager的单例对象,该类的单个实例将由整个应用程序使用。 在本例中,SocketIOClient需要将socketURL作为参数http://demo.yourdomain.com:3000 。 socket . on(clientEvent: . connect) {data, ack in … 客户端连接时发出。 这也称为成功重新连接。 连接事件获得一个数据项:已连接到的名称空间。 open func emit(_ event: String, with items: [Any]) 将事件和可选数据项发送到服务器 。 通过管理器创建的套接字由管理器保留。 客户端成功连接到套接字后,我们使用套接字的emit方法将数据发送到服务器。 因此,至少必须维护对管理器的单个强烈引用才能使套接字保持活动状态。 为了连接到套接字,请调用socket.connect()并 […]

UIFontMatrix

苹果在iOS 11的UIFONT中引入了新的可访问性功能,称为“ UIFontMetrics ”。 基本思路: 它是获取支持应用程序中动态类型的自定义字体的对象。 概述: UIFontMetrix允许在您的应用程序中添加自定义可缩放字体支持。 您可以通过设置应用程序更改辅助功能字体大小,该设置应用程序直接反映在包含动态系统字体类型的应用程序字体中。 在iOS 11上,apple允许用户根据用户的可读性设置辅助功能字体大小。 应用支持动态类型 ,可根据您的首选阅读大小进行调整。 分步集成: 您需要在viewDidLoad()中调用“ showFontAndFamily”方法。 强制性的,我们需要打开上图中提到的更大的辅助功能大小 。 启用了字体滑块,可以根据您的选择使用和设置字体。 现在打开您的应用程序。

iOS中的测试驱动开发,SWIFT 4-第1部分

测试驱动开发(TDD),一种敏捷的软件开发方法,通过为我们的业务逻辑单元编写测试用例,可以使开发过程更无错误,并使代码更稳定。 如果您是TDD的新手,并且想稍微进一点,那么您想查看一下我先前关于测试驱动开发(TDD)的博客。 在iOS中,Xcode使单元测试比任何其他现代编程工具都容易得多。 让我们立即跳入编码,开始我们的冒险。 我们将使用MVVM构建我们的项目,因为它更易于进行基于组件的测试,因为我们对测试我们的业务逻辑而非控制器更感兴趣。 如果您不熟悉MVVM,那么您想快速浏览一下我关于MVVM的博客系列。 我们将学到什么? 我们将不仅致力于学习如何使用Xcode在iOS中编写测试用例,还将关注如何思考和计划我们的测试用例。 在Xcode项目中启用UnitTestCase 在新项目中启用。 添加现有项目。 ->要在现有项目中添加单元测试用例,我们需要添加一个新的iOS Unit Testing Bundle目标。 我们要建造什么? 我们将构建一个示例应用程序,该应用程序将获取场所(如商业场所和商业场所)的列表并显示它们。 因为我希望此博客非常简单,所以将从.json文件中获取位置列表。 让我们检查将用于DemoTests项目的UML类图。 下载 用于初始项目设置 的 启动程序项目, 即UT_Starter1。 入门项目具有上述屏幕的view , view模型和相应的测试文件。 作为#Rule1,我们需要编写有关Red-> Green-> Refactor流程的测试用例。 由于我们已经准备好编写测试用例,因此在Xcode中创建任何单元测试类时,都会生成一些自动生成的方法。 让我们继续学习该类中列出的所有方法: func setUp() 这是我们得到的最简单的Red案例。 因此,任何错误,即使是“未解决的标识符”也被视为红色案例。 绿色: 我们将编写最简单的代码来通过我们的测试用例。 导航到Place.swift 。 将以下代码放置在文件中。 在@testable import DemoTests下面写下@testable import DemoTests PlaceTests.swift 。 现在再次运行。 有用!! 您将在文件中看到绿色的勾号。 这意味着我们的代码已通过测试用例。 因此,我们已经成功地写下了绿色代码。 重构: 到目前为止,代码中没有太多可重构的,我们可以跳过这一部分。 […]

iOS提示:本地化iOS应用

介绍 因此,这里有个故事,您已经制作了自己的应用程序,一切都可以正常工作,拥有良好的用户基础,现在您想将其扩展到海外(或者您只是创建一个新项目,并且已经希望将其本地化😜)。 设置项目进行本地化 因此,在我们开始之前,我们需要在您的项目设置下选中“使用基础国际化”。 现在,您可以通过单击“ 本地化”列表下的+按钮并选择新的语言来添加希望您的应用程序支持的语言。 标记可本地化的字符串 将您的Strings标记为可本地化是非常简单的,您只需要使用NSLocalizedString来包装它,该方法仅需要两个参数: key :您的可本地化字符串 comment :对翻译的评论 NSLocalized(“我爱雨燕”,评论:“雨燕情书”) 这使Xcode可以映射所有本地化的Strings以便以后导出( 请注意:如果将字符串分配给变量并将其传递,因为关键参数Xcode不会将其导出以进行本地化 )。 本地化情节提要和Nib文件 您也可以将Storyboard和Nib文件标记为本地化,但是只需标记一下右面板内的Localize…按钮,而不是标记每个字符串。 并选择您要支持的其他语言。 导出,本地化和导入 这是我最喜欢的部分,因为我们已经将字符串包装在NSLocalizedString并将Storyboard和Nib文件标记为可本地化,所以我们现在可以导出项目以进行本地化。 要将项目导出以进行本地化,您需要: 在“项目浏览器”面板中选择项目。 在Xcode菜单栏中,选择编辑器>导出以进行本地化…(这将搜索NSLocalizedString ,Storyboard和Nib文件内的任何字符串) 保存到以后可以找到的任何位置(我通常将其保存在桌面上) 在任何xliff编辑器中编辑导出的.xliff文件,以翻译您的字符串(我个人使用XLIFFTool,因为它非常简单且免费) 完成翻译后,在Xcode菜单栏中,选择“编辑器”>“导入本地化…”。 测试您的本地化应用 好了,现在我们已经完成了所有工作,是时候查看我们的本地化在界面中的位置了。 使用Xcode 9测试本地化非常方便,您无需更改设备或模拟器的语言和区域,现在您可以使用语言环境和语言配置来编辑方案。 要编辑您当前的方案,请转到产品>方案>编辑方案,或者只是选择单击您的方案。 现在转到选项标签,并将“应用程序语言”和“应用程序区域”更改为您已本地化的任何语言。 关闭方案编辑器,运行您的应用程序,使其外观看起来像现在! 🌎 谢谢! 感谢您阅读这篇文章,希望您至少学到了一点。 如果您有空闲时间,可以签出我的GitHub! 😉

在iOS中管理文件

最近,我一直在iOS中使用“文件”,与Android相比有点复杂。 因此,在这篇文章中,我想介绍如何为用户从我们的应用程序预览,打开,共享,保存或打印来自远程URL的文件 。 首先,这是您需要从Apple提供的UIDocumentInteractionController文档中了解的内容。 使用此类提供用于预览,打开,复制或打印指定文件的适当的用户界面。 显示其用户界面后,文档交互控制器将处理支持文件预览和菜单显示所需的所有交互。 您还可以使用委托来参与所显示界面中发生的交互。 在文件可以出现在“文件”应用中之前,您必须指示您的应用支持“ 就地打开和已启用文件共享” 。 这些选项是使用Info.plist文件中的键配置的。 第一个键是UIFileSharingEnabled ,它使iTunes可以共享“文档”文件夹中的文件。 第二个键是LSSupportsOpeningDocumentsInPlace ,它授予本地文件提供者对Documents文件夹中文件的访问权限。 将这些键添加到Info.plist并将其值设置为YES 。 UIFileSharingEnabled:应用程序支持iTunes文件共享 LSSupportsOpeningDocumentsInPlace:支持就地打开文档 在转到代码之前,这里需要了解一些UIDocumentInteractionController实例属性和方法。 实例属性 url标识本地文件系统上目标文件的URL。 ( 请注意, url属性需要本地文件系统上文件的URL,而不是 文件 的远程URL ,即“ https://…”。如果您仍然提供远程URL来测试会发生什么,请告诉我,应用程序将崩溃 ***由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“ UIDocumentInteractionController:无效的方案https”。 仅支持文件方案。’*** 2. uti目标文件的类型。 此属性的值用于确定哪些应用程序能够打开文档。 3. name目标文件的名称。 此属性包含没有任何先前路径信息的文件名。 此属性的默认值是从url属性中的路径信息派生的。 实例方法 presentPreview(animated :)方法 此方法异步显示文档预览。 文档交互控制器响应于适当的用户交互而自动关闭文档预览。 您也可以使用dismissPreview(animated:)方法以编程方式关闭预览。 情况1:假设您在远程URL上有一些文件,您想为用户下载该文件,并允许他们在他们希望的任何地方存储/共享。 请注意,用户iPhone中所有支持目标文件类型的应用程序都将显示在操作表的应用程序列表中。 用户可以将文档保存到iCloud,投递箱,本地文件,相册(如果支持目标文件类型)或他/她希望的任何位置! 😃 情况2:假设您在用户iPhone的某些应用中获得了一些文件,您希望他们在他们希望存储/共享的任何地方 在上面的代码中,您不需要在tempURL中存储任何内容,您只需要在url属性中提供适当的文件路径,为“ com.adobe.pdf”更正uti和文件名即可。 然后,使用presentPreview(animated:)方法,您可以轻松进行👍🏼 为了撰写这篇文章,我从网上的一些文章中获得了参考。 […]

SKCameraNode和Xcode调试视图层次结构

当我刚刚开始SpriteKit之旅时,我确实发现了许多问题。 当然,最常见的原因是我缺乏对Swift和Apple框架的经验,因此寻找解决方案可以帮助我学习和发展。 有时我会遇到不必要的事情,就像我前一天进入Xcode的Debug View Hierarchy 。 当涉及到SpriteKit , SKCameraNode和当前版本的Xcode v9.3.1中的调试器时,我确实遇到了一些特殊的行为。 我设置了一个非常基本的SpriteKit项目,以清楚地显示行为。 在这里,我们在SpriteKit编辑器中只有8个精灵。 正如我们所期望的,运行该应用程序将为我们提供与编辑器中完全相同的视图。 因此,让我们在运行应用程序时输入视图调试器,瞧,我们在调试器中也获得了完全相同的视图,就像在应用程序和编辑器中一样。 到目前为止,到目前为止,我们现在将SKCameraNode添加到场景中并再次执行相同的测试。 添加了SKCameraNode并再次运行该应用程序后,我们仍然可以获得预期的结果。 相机会看到我们定义的场景,并且应用程序中的视图正确。 因此,让我们再次输入Debug View Hierarchy … 哇! 这不是我期望的。 运行该应用程序时的视图是正确的,与编辑器中的视图相同,但是在调试器中获得的视图是不同的。 该视图似乎偏移了半个屏幕。 在将摄像机添加到场景(包括在开始新项目时添加到默认SpriteKit场景)后,就会始终发生这种情况。 通过SpritKit编辑器添加相机,或者以编程方式通过代码添加相机,这没有什么区别。 我发现通过将场景的锚点从默认值(0.5, 0.5) 0.5,0.5 (0.5, 0.5)更改为(0, 0)解决此问题,然后调试视图可以与SKCameraNode一起使用。 更改锚点会使调试器在使用相机时按预期显示视图,但除非场景的锚点(0,0)对我而言似乎不正确,否则无法将调试视图与SpriteKit和SKCameraNode一起使用,或成为预期的行为。 我希望调试器在运行应用程序时显示与我看到的视图相同的视图,无论我在场景中使用的锚点是什么。 这是Xcode v9.3.1中的错误吗? 还是我错过了什么? 最初于 2018 年5月16日 发布在 code.bitbebop.com 。

教程:与Xcode 9和Fastlane的持续集成

服务器上的Xcode 下载并运行Xcode 9 打开Xcode Preferences,选择Server&Bots选项卡,然后将切换开关更改为on。 您到达“选择集成用户”的地步。 对于更简单的教程,我将选择具有登录用户权限的同一用户帐户, 具有admin特权 。我的用户为“ jenkins”。 另外,对于本教程,请为任何安全提示选择“始终允许”。 您可能会收到一条消息“为Xcode Server集成用户启用了屏幕锁定”。 您应该在System Preferences > Security & Privacy 中将其禁用 。 如果一切顺利,您应该看到类似下图的内容。