Swift 3.0类说明—扩展名,GCD,WebView,下载图像,JSON

主讲人:魏炜 延期 可帮整体类别(已知类别)加新的属性或方法 GCD 图片来源:Wei Wei 主执行绪处理UI的工作 两种方式工作模式 sync同步(做完再做下一个) async不同步(同时多工) 所以主执行绪不能放同步的工作,因为会阻挡UI的进行 串行队列与并发队列 更多:Swift的Grand Central Dispatch教程:第1/2部分 dan12411 / HelloGCD 通过在GitHub上创建一个帐户为HelloGCD开发做出贡献。 github.com 网页浏览 显示网页的特定方法:Safari / UIWebView / WKWebView / SFSafariViewController UIWebView / WKWebView连网的顺序:网址-> URL->请求-> WebView 连到非苹果的网页,要设定开起权限 UIWebView:直接拉WebView到故事板 WKWebView:用程式码写WebView,需汇入WebKit,效率比UIWebView好 Safari:连网顺序URL->:Safari iOS 10以上版本:UIApplication.shared.open(URL,选项:[:],completionHandler:无) 以前的版本:UIApplication.shared.openURL(url) SFController:需汇入SafariService,连网顺序URL->产生Controller->推出Controller 介绍UIWebViewDelegate,并使用活动指示器 载入HTML或已经写好的网页 介绍用连结打开其他APP(之后似乎其他老师会在教到) 更多:iOS 9快速上手:搜寻API与SFSafariViewController dan12411 / HelloWebView 通过在GitHub上创建一个帐户为HelloWebView开发做出贡献。 github.com 下载图片 第一种方法(用Data,记得要设定背景下载) 一样用网址产生URL 用共时伫列去下载 […]

我的应用周

App Store几乎已经死了,iMessage应用程序永远都变得无关紧要了,我敢打赌,您上次下载应用程序时,它是[仅草稿:很久以前就用一种机智的说法来表达]。 但是,仍然..我喜欢应用程序。 继续,我将向您介绍5个您应该下载的应用程序 -这不是“隐藏的宝石列表”或“本周前5个应用程序”,因为该死,我只是在这里喊出几个有趣,有趣,新颖的应用程序,这些都是我本周很有趣的应用程序。 OUTTA- (笨拙,但未来)将贴纸和消息叠加到现实世界中,我需要说更多吗? 那些了解我的人知道这是我的事。 Houseparty — (我在这件事上和妈妈谈了2个小时),即使该产品在Product Hunt首次亮相后,我是否还需要提及此应用? 它做的很酷,它告诉您您的朋友何时在“房子里”,而我喜欢的人告诉我朋友在“房子”。 宇宙 – (令人困惑,但耐人寻味)此应用让我想起了Byte铁杆,但我在此应用中见过的东西我从未见过 。 这就像盯着Metatron立方体的无限空隙,就像在内衣的污渍中找到宝藏图一样,令人惊讶。 Folioscope — (90年代的互联网感觉+ powerpoint)数字翻页预订可正确处理所有事情。 易于共享,是一个庞大的社区,欢迎您出色的动画技能,这对我来说真是太难了。 Toasty — (绝对没用,绝对值得下载)该应用程序为您提供了一种敬虔的能力,可通过劫持手机的通话功能0随时以全屏照片消息打扰您的朋友。

了解iOS应用的代码签名

如果您是iOS开发人员,则很可能必须处理代码签名。 而且,如果您是初级iOS开发人员,则开发人员门户网站“证书,标识符和配置文件”部分中的所有操作可能会让您有些不知所措。 本文的目的是帮助初级iOS开发人员更深入地了解代码签名。 这不会是有关如何对应用程序进行代码签名的分步教程。 理想情况下,阅读本文后,您无需进行任何教程即可对应用程序进行代码签名。 我不打算讨论更底层的细节,但我们将讨论一些有关非对称密码的问题。 非对称密码学 您需要了解的最低要求是,非对称加密使用公共密钥和私有密钥 。 用户必须保留自己的私钥,但可以共享公钥。 使用这些公钥和私钥,用户可以证明自己确实是他本人。 可以在此处找到有关非对称密码学的很好的高级说明。 如果您想了解实施细节或背后的数学知识,可以在线找到它们。 应用程式编号 应用程序ID是应用程序的唯一标识符。 它由Apple生成的团队ID(您对此没有任何控制权)和应用程序的包ID(例如com.youcompany.yourapp )组成。 还可以有通配符应用程序ID: com.yourcompany.* 。 这些将在多个捆绑ID上匹配。 通常,您将拥有一个明确的应用ID,而不是通配符。 证明书 您可能已经注意到,要在Apple开发人员门户中创建证书,您需要上传证书签名请求。 您可以从钥匙串生成此CSR,并且此CSR包含私钥。 然后,在开发人员门户上,您可以使用此CSR创建证书。 证书可以有多种类型。 最常见的是: 开发(iOS应用程序开发)—您需要那些应用程序才能在Xcode的设备上运行您的应用程序。 分发(App Store和Ad Hoc)—您需要那些人才能通过App Store或Ad Hoc分发您的应用 APNS(Apple推送通知服务)—您需要那些能够将推送通知发送到您的应用程序的服务。 与开发或分发证书不同,APNS证书与应用程序ID关联。 有两种类型的APNS证书,用于开发-Apple推送通知服务SSL(Sandbox)和用于生产-Apple Push Notification服务SSL(沙箱和生产)。 如果要使推送通知在调试和分发版本中均起作用,则需要创建它们两者。 设备 每个会员年度每个产品系列最多可以向您的帐户添加100台设备。 100部iPhone,100部iPad,100部iPod Touch,100部Apple Watch和100部Apple TV。 要将设备添加到您的帐户,您需要添加其唯一的设备ID。 您可以在Xcode或iTunes中(比较复杂)轻松找到它。 您可以在此处找到有关如何向您的帐户添加设备的详细指南。 供应配置文件 配给配置文件是将App ID与证书以及(为了进行开发或临时分发)与某些设备相关联的内容。 您可以在Apple开发人员门户上创建配置文件,然后将其下载到Xcode中。 用法 创建所有这些文件之后,您可以转到Xcode,添加证书,刷新配置文件,然后选择所需的配置文件。 […]

我们正在杀死Next Keyboard。 这就是为什么

这是我们必须做出的最艰难的宣布之一…… 我们正在关闭 Next Keyboard 。 我们将不再支持Next Keyboard,并将停止对其的进一步开发。 换句话说,我们正在杀死它。 下一键盘将于2016年10月10日从App Store中删除。 之前我们从来没有写过这样的东西,所以我们不确定如何表达它。 我们仍然为自己的所作所为以及推动它发展的情感和灵感感到自豪。 但是此刻,我们感到内,、失望,而且-坦率地说-伤心欲绝。 我们对下注于我们的早期用户的一种责任感加剧了这种感觉,我们从中筹集了65,000美元。 当我们着手为iPhone打造最佳键盘时,我们并没有计划将Next Keyboard变成这样。 我们提供了一个好的产品,但未能兑现我们所有的承诺。 您对我们冒险,对不起,我们让您失望了。 正如我们对自己说的每个人有时会遭受损失一样,这种损失不仅会影响我们。 它会影响所有相信我们并相信该应用程序的人。 我们对此进行了多次反思,并且弄清楚了杀死Next Keyboard的原因: Next Keyboard不是可持续的业务。 我们公司开始在App Store中构建付费应用程序(请参阅唤醒和快速适应),我们认为我们可以利用Next Keyboard复制我们的成功。 不幸的是,付费应用的预付价格已经变得过高,无法正常扩展,特别是与免费应用相比。 换句话说, 付费应用程序(大部分)已失效 。 Next出了什么问题? 尽管一切顺利,但App Store的现实情况是,这并不是一种简单的快速致富方法。 对于我们来说,突破炒作很重要。 媒体提供给您的故事和案例研究不准确。 在应用开发者Pixite之后,The Verge有很大的发展,John Gruber最近写了有关关闭其应用Vesper的文章。 移动设备上的功能键盘很重要,但它们并不能促进可持续的良好业务发展,它们是极其复杂的产品,需要对机器学习和NLP有深入的了解。 考虑以下故事: 微软购买了Swiftkey Minuum已从功能键盘转向表情符号空间 Fleksy被Pinterest收购 大玩家进入了键盘大战。 Google为iOS,Gboard构建了自己的键盘,而Apple的键盘也在不断改进。 当iOS 9发布时,Apple的键盘具有快速输入功能,快捷键栏以及具有多点触摸手势的选择文本。 像Next这样的第三方键盘在功能上受到限制,而Apple则没有。 例如,Apple的键盘是唯一可以记录语音并进行语音转文本的键盘。 iOS 10将继续这一趋势。 而且不要让它感到困惑-我很高兴使用Apple的键盘。 Apple即将开放一个新的iOS 10 […]

最喜欢的WWDC 2018会议

今年,我未能通过WWDC的彩票,也错过了主题演讲直播,因为那天我在奥斯陆峡湾外的克里斯蒂安·拉迪奇(Christian Radich)上航行。 幸运的是,所有视频很快都可以在Apple Developer网站上找到,我们现在可以在Chrome或macOS上的非官方WWDC应用中观看它们。 我推荐WWDC macOS应用程序,因为它可以标记收藏夹和过滤器,还可以将播放速度调整为1.25或1.5,从而节省了一些时间。 今年WWDC将重点放在隐私,稳定性和速度上,这是我所希望的,这要归功于Apple工程师实现了这一目标,而且重新安装所谓的更稳定的iOS 12确实是现实。 作为一名iOS工程师,我喜欢把更多的精力放在我身上,这是关于Swift编程语言,Cocoa Touch中的新变化,Xcode的增强以及测试技巧。 我还想探索有关机器学习的更多信息,因此,我很高兴苹果公司通过引入Turi Create和Create ML对该技术进行了更多投资。 对我来说,API经常被弃用,并且很高兴知道它们,但是最重要的是投资于您的编程,调试和测试技能,您可以将其应用于许多其他平台。 去年收藏夹列表的下一个,下面是我最喜欢的个人笔记。 事物未按特定顺序列出。 希望你觉得它有用。 平台联盟国 如果您没有时间,则应仅观看此会话。 平台国情咨文就像开发人员的主题演讲一样,它突出了重要的变化。 隐私:Apple确认其对隐私和安全的承诺,并在iOS 12上引入了密码管理功能和自动填充功能。生成强密码,与第三密码管理集成并从SMS消息快速填充OTP字段从未如此简单。 GateKeeper也得到了一些改进,并开始要求对应用程序进行公证。 iOS 12:性能大幅提升,Siri通过快捷方式支持,FaceTime中的群组调用和分组通知功能变得更加智能。 表情符号迷也介绍了Memoji。 macOS 10.14 Mojave:带有暗模式的更多内容。 他们主要使用Xcode在黑暗模式下进行演示,这看起来很酷。 今年的WWDC横幅广告提供了有关iOS和macOS跨平台应用程序的提示,这对于Marzipan来说是部分正确的,Marzipan是允许iOS应用程序在Mac上运行的一种方式。 Xcode 10:改进了代码编辑和源代码管理更改条形指示器。 使用内存调试工具进行调试,增强LLDB性能,尤其是用并行任务完全用Swift重写的新构建系统是令人振奋的消息。 Swift 4.2:如果您遵循swift repo,那么Swift 4.2可能并不奇怪。 Swift 5计划也有公告。 机器学习:从未比这更热。 今年,我们看到了在机器学习方面的巨大投资,这些机器学习包括Create ML,Turi Create,Natural Language框架,CoreML 2和Vision中的新检测功能。 ARKit 2,watchOS 5,tvOS 12,AppStore Connect和AppStore Connect API是您不想错过的其他重要新闻。 Swift的新功能 与本次会议一起,我建议您阅读非常简洁的Swift […]

单元测试—具有Nimble + Snapshot的UIView

大家好,我目前正在撰写一系列文章,展示如何为iOS编写某种测试,这是第一篇。 在上一篇文章中,我谈到了TDD和一些测试框架,这些框架在讨论iOS平台上的测试时对我有很大帮助。 在这里,我们将看到如何对XIB文件创建的UIView进行单元测试,或使用制图通过代码对UIView进行单元测试。 如果您想了解有关制图的更多信息并查看代码,可以在这篇文章中查看。 现在让我们了解测试! 设置您的项目 首先,我们需要在项目上安装Quick,Nimble和Nimble + Snapshot。 您可以通过将Podfile pod ‘Nimble-Snapshots’和Podfile pod ‘Nimble-Snapshots’到Podfile来Podfile 。 不要忘记在测试目标上设置这些框架,如果没有框架,则可以在项目中创建一个新框架。 为此,您可以选择项目->目标-> +-> iOS单元测试包,并为其命名。 您的Podfile应该如下所示: 我们的swift文件只是一个简单的UIView自定义类: 使用查看代码 现在,让我们使用视图代码创建相同的测试。 首先,创建新的UIView自定义类文件,添加两个UITextField和一个UIButton并使用制图添加约束。 就像我们之前使用XIB进行的测试一样,这些屏幕截图将在您的项目文件夹中创建。 您可以随时检查它们。 Nimble + Snapshot如何工作? 您可能会问我-我怎么知道我何时打破观点或我打破了什么? Nimble + Snapshot会创建差异屏幕截图,而在您破坏测试时会失败。 让我们以实际的方式来看一下。 让我们注释一下我们的textFieldDidChange()方法以删除隐藏/显示行为。 如果您查看日志(可以按png过滤),Nimble + Snapshot会打印失败测试图像的路径。 打开Finder->转到->转到文件夹(Cmd + Shif + G)并粘贴路径。 路径类似于:/ /Users/youruser/Library/Developer/CoreSimulator/Devices/adeviceid/data/Containers/Application/anapplicationid/tmp/LoginViewTests/failed_LoginView_should_show_loginButton_if_user_set_username_and_password@2x.png 该文件夹包含三个图像:引用,失败和差异。 根据这些图像,您可以查看代码中的错误并进行修复。 测试UIView是了解您在编码时是否破坏某些东西或代码是否按预期运行的好方法。 如您所见,我们不需要编写测试来验证显示/隐藏行为,我们通过快照视图进行检查。 如果您想了解有关Snapshot和UITesting的更多信息,可以在realm.io上查看此演讲。

以编程方式创建具有阴影效果的圆形按钮

在Swift中创建应用程序时,对UI进行出色的设计至关重要。 实现吸引人的设计的最简单方法之一是在文本或按钮上添加一些阴影。 对于那些在Swift中使用故事板的人,您可能已经知道如何在按钮上添加阴影,但是对于那些喜欢在应用程序中编写所有代码的人,我想向您展示如何以编程方式添加阴影效果。 这是我在故事板上添加的默认按钮。 这个按钮对我来说很普通。 为了向此按钮添加光晕,我最喜欢实现的功能之一是添加阴影并创建圆形边框。 我们怎样才能做到这一点? 让我们看一些代码。 pressButton.layer.shadowColor = UIColor.black.cgColor pressButton.layer.shadowOffset = CGSize(宽度:0.0,高度:5.0) pressButton.layer.masksToBounds =假 pressButton.layer.shadowRadius = 2.0 pressButton.layer.shadowOpacity = 0.5 pressButton.layer.cornerRadius = pressButton.frame.width / 2 pressButton.layer.borderColor = UIColor.black.cgColor pressButton.layer.borderWidth = 2.0 让我们解释一下每个图层设置的作用。 shadowColor =设置阴影的颜色 shadowOffset =设置阴影应距视图多远,以提供3D偏移效果 masksToBounds =确定是否将超出其边界的层的任何子层剪切到这些边界(在我的示例中,我将其设置为false以显示角半径和阴影效果) shadowRadius =设置阴影的宽度 shadowOpacity =设置阴影的透明度,其中0不可见,而1则尽可能强 cornerRadius =设置拐角的半径(这里我将其设置为按钮框的宽度除以2以获得圆形按钮。要注意的重要一点是,这仅在按钮的宽度和高度相等时才有效) borderColor =设置边框的颜色 borderWidth =设置边框的宽度(没有此设置,边框将不呈现) 结果就是这里! 稍微调整一下按钮的图层设置,看起来已经更好了。 使用这些设置可以实现多种效果。 我建议您尝试各种阴影设置,以了解可以实现的目标。 今天就这些!

在单个版本中启动多个模拟器-XCode 9和XCode 10

iOS开发人员面临的主要挑战之一就是要在所有可用的iPhone屏幕尺寸上测试自动布局。 如今,如果您遵循Apple的建议以支持iOS 10以后的所有设备,则必须以至少5种屏幕尺寸显示布局: iPhone SE iPhone 6 / 6s / 7/8 iPhone 6 / 6s / 7/8 Plus iPhone X / XS iPhone XS最大 对于所有这些屏幕尺寸,我们必须确保布局适合其中每个尺寸。 但是由于要实例化不同的模拟器大小以测试布局,因此此任务很痛苦。 这就是为什么此脚本可以帮助您节省大量时间的原因。 #创建一个自定义模拟器 首先,我们必须创建一个新的模拟器,该模拟器将在构建项目时一起启动所有模拟器。 为此,请转到Products -> Scheme -> Edit Scheme 打开左侧菜单中的Build ,创建一个新的Pre-Aciton脚本并粘贴以下脚本 #创建模拟器列表文件 该文件将保存运行“ Custom Simulators模拟器时将启动的模拟器中的所有标识符。 在项目根目录下创建一个名为SimulatorsList.txt的文件,并列出要启动的所有模拟器标识符。 请注意,启动更多的模拟器会使用更多的内存和CPU。 要获取模拟器标识符,请打开您的终端并运行instruments -s devices 。 这将列出所有可用的模拟器及其各自的标识符。 它们将以以下格式显示: iPhone型号(iOS版本)[IDENTIFIER](仿真器) 我们只对模拟器标识符感兴趣,因此对于要同时启动的所有模拟器,将其标识符复制到方括号之间,并将其粘贴到SimulatorsList文件中,每行一个。 #创建运行脚本 最后一步是创建一个运行脚本,以在所选模拟器为“定制模拟器”时运行此最近创建的脚本。 选择项目目标,然后转到“ Build […]

轻松将Unsplash搜索添加到您的iOS应用中

两个月前,我们共享了第一个iOS开源组件。 正如我随后解释的那样,我们在移动设备上开源的策略是提供易于集成的本机UI组件,而不是标准的API包装器。 UnsplashImageView是开胃菜,现在成为UnsplashPhotoPicker 。 这个新组件使应用程序可以轻松地从Unsplash库搜索和下载照片。 只需几行代码,应用程序便可以为用户提供精美的高质量照片,从而开辟了全新的移动用例。 一些例子: 假设您是一个博客平台,希望允许其用户将Unsplash中的照片插入其博客文章中,此组件将使您的生活变得轻松。 (中😉) 或者,您可以成为一个项目管理工具,向其用户提供更改其项目背景的工具。 (Trello😉) 哦! 您是一项可帮助人们建立网站的服务,如何让他们使用其主页上Unsplash的高质量照片呢? (平方😉) 或者,也许您是一个专门制作演示文稿的应用程序,并希望您的用户将精美的摄影作品插入其精美的套牌中? 我们有你覆盖。 (苹果😉) 在使用它之前,您需要获得Unsplash API访问权限和秘密密钥。 访问我们的Unsplash API页面,以注册为开发人员以获取更多信息。 UnsplashPhotoPicker是UIViewController的子类,并且很容易配置: 要检索选定的照片,请实现UnsplashPhotoPickerDelegate协议: 而已! 您可以使用更多选项来配置照片选择器。 并查看UnsplashPhoto.swift以查看返回的信息。 您可以在Github上找到该项目:https://github.com/unsplash/unsplash-photopicker-ios 如果您有任何反馈或问题,请随时通过apps@unsplash.com发送电子邮件。 并让我们知道您是否在项目中使用它。 Android即将推出。

iOS与Xcode Server持续集成的入门指南

Apple在Xcode Server以及与OSX Server(应用程序)和Xcode Server(服务器应用程序内的Xcode)的持续集成方面拥有非常全面的文档。 如果指南中记录了所有内容,您可能想知道这篇文章的意义是什么? 但是,Apple指南仍比macOS Server读作OSX Server,但Apple发布了新的macOS Server(5.2),并对Automated Xcode Builds进行了一些改进。 无论如何,这都是一个小教程,旨在设置Mac以使其作为具有Xcode Service的macOS服务器运行,以及为具有Xcode 8的macOS服务器设置基本Xcode Bot以执行持续集成。 我们将介绍macOS Server的基础知识和设置 配置Xcode以使用macOS Server的Xcode服务 设置开发Xcode以在macOS服务器上使用Xcode Server 使用Github上的XCFit Swift Package示例创建Xcode机器人 运行Bot集成并分析结果 要求 为了使用macOS Server和Xcode Service设置持续集成,我们需要 安装了macOS Server 5.2应用程序的Mac或Mac Mini。 从App Store下载 服务器上安装了Xcode 8。 从App Store下载 确保已安装Swift 3 Github上托管的Xcode Project存储库(本教程可选) 我们可以从中触发Xcode机器人的另一台开发Mac(本教程为可选) macOS Server 5.2的新功能 Apple已将其旧的OSX Server重命名为macOS Server,它具有许多新功能,例如配置文件管理器,缓存服务器,NFS,Xsan 5等,但让我们关注Xcode Service的新功能。 macOS Server不支持旧的Xcode版本。 支持Xcode […]