iOS-9针对开发人员的新增功能

大家好,我想分享一下我遇到的针对开发人员的iOS-9新功能。 正如苹果公司所建议的那样,开发人员要适应最新的技术,这些技术会随着每个iOS版本的变化而变化,以具有更好的性能,并通过WWDC进行演示。

开发人员也对iOS 9感到高兴。 在一长串的改善中,以下是最重要的9项

使用CoreSpotlight的搜索扩展性

Apple归功于CoreSpotlight的重要性不可低估,因为它在iOS 9为开发人员提供的新功能列表中显得很高。 简而言之,CoreSpotLight为应用程序提供了与系统范围的搜索功能集成的方式,并将其内容显示在Spotlight搜索结果,Handoff或Siri提醒中。

此外,由于深层链接,当用户点击搜索结果时,该应用程序将启动,并带有足够的信息以显示该搜索结果最合适的内容。 CoreSpotlight使得深度链接的另一种用法是实现应用程序历史记录。 此功能将使应用程序提供类似于浏览器导航历史记录的历史记录堆栈,并且任何在Search中注册的应用程序都将免费获得它。

CoreSpotlight不仅适用于本机应用程序,还适用于Web应用程序。 特定的标记将允许指示可以通过Spotlight搜索访问网站。 这意味着,当导航到与搜索结果相关的深层链接时,用户将被带到该网站,或者,如果安装了特定应用,则将被带到该应用。

UIKit

UIKit在每个iOS应用程序中使用,并驱动用户界面。 在iOS 9中,Apple从根本上改变了开发人员应使用新的UIStackView创建布局的方式。

UIStackView

新的堆栈视图非常重要,因此Apple建议您开始使用堆栈视图构建用户界面,并且仅在界面变得过于复杂或高度自定义时才偏离。 堆栈视图从开发人员那里抽象了很多创建约束的工作。 您将项目插入堆栈视图,UIKit会在运行时自动分配适当的约束。

在界面生成器中可以使用几种方法来使用堆栈视图。 您可以从对象库中选择水平或垂直堆栈视图,也可以使用Xcode底部的专用按钮:

UIKit动态

一直很受欢迎,而且很有趣 UIKitDynamics API具有新行为。 除了现在支持非矩形碰撞边界(即路径)之外,还有针对UIAttachmentBehavior的新附件类型的新行为类。

新的行为UIFieldBehavior使开发人员可以对矢量力场进行建模。 苹果甚至提供了一个不错的代码示例来演示如何在此处使用它。 值得下载以查看实际的新行为并查看显示如何实现它的代码示例。

UICollectionView增强功能

自从iOS 6引入以来,集合视图已成为在Cocoa Touch中显示数据列表的首选方法。与表视图相比,它们具有明显的优势,但最大的优点是能够定义自定义布局。

在iOS 9中,它们变得更加强大和直观。 新的布尔属性sectionHeadersPinToVisibleBounds强制流布局像表视图一样始终工作。 现在,在滚动过程中,节标题将停留在屏幕顶部。

它们也可以很容易地重新排序。 如果您使用的是UICollectionViewController ,则将installsStandardGestureForInteractiveMoment设置为true。 现在,只需一行,用户就可以在其用户界面中按自己的意愿订购商品。

UIPickerView增强功能

全世界的开发人员都编写了一些技巧来正确选择选择器的视图。 现在,选择器视图已为调整大小和适应性提供了本地支持。 在iOS的早期版本中,即使您尝试操纵日期选择器和选择器视图,它们也会强制使用默认大小。 这两个控件的默认宽度现在为320点。 以前,这将是显示的iPhone的设备宽度。

很少有人提到最近在NSLayoutConstraint上添加的函数activateConstraints(_ 🙂 。 这是在iOS 8中添加的,可以通过一个调用激活一组约束。

应用细化

对于开发人员而言,这是一个巨大的胜利。 对于开发人员来说,最糟糕的事情之一就是错过销售机会,因为用户没有连接到WIFI来下载我们的应用程序。 现在,Apple正在使用称为“应用程序精简”的概念来帮助消除这些类型的问题。

借助App Thinning,用户将仅下载与用户相关的二进制文件部分。 例如,如果用户使用iPhone 6+,则下载将不会下载@ 1x或@ 2x图像,因为它们将不被使用,而只会下载@ 3x图像。

App Thinning具有三个主要组件:

  • 应用程序切片 :这是仅下载所需内容的过程。
  • 随需应变资源(ODR) :由App Store托管的资源,用户下载应用程序后即可访问。 例如,通过应用内购买在游戏中建立新关卡。
  • 位码 :允许Apple将来重新优化应用程序的二进制文件,而不必提交新版本。

关于App Thinning最好的部分也许是它的两个组成部分实际上已完成:App Slicing和Bitcode。 我个人认为这是一个很棒的主意,因为开发人员长期以来一直在独立进行此操作。

若要使用,请在应用程序中使用关键字标记资源。 然后,可以使用这些标签在以后的时间下载这些资源。 更好的是,这可以在Xcode中进行调试。 使用newNSBundleResourceRequest类,调用beginAccessingResourcesWithCompletionHandler(_ 🙂以访问请求的资源。

SFSafariViewController

这早就该了。 在iPhone上查看网页内容是一个日常过程,我可以说iOS实际上是移动浏览的先驱。 长期以来,开发人员都只能使用UIWebView。 它可以完成大部分工作,但是以泄漏内存,无法访问硝基javascript引擎以及无法访问设备的钥匙串,cookie等而闻名。

随着WebKit的发布,情况有所改善,WebKit引入了改进的WKWebView。 该版本提供了对硝基javascript引擎的访问,以每秒60帧的速度进行响应滚动,内置手势等。 开发人员仍然必须创建自定义用户界面,无法访问自动填充,阅读器模式或浏览历史记录。

SFSafariViewController使用户浏览保持一致。 这也为开发人员节省了大量时间,因为他们不再需要创建自己的自定义浏览体验。 对于用户而言,这更加方便,因为他们将预先填写密码,不必离开应用程序,可以使用其浏览历史记录等等。

最好的部分是使用它们非常简单:

 导入UIKit 
导入SafariServices

ViewController类:UIViewController,SFSafariViewControllerDelegate
{

覆盖func viewDidAppear(动画:布尔)
{
super.viewDidAppear(动画)

//创建实例safari视图控制器
让mySafariVC = SFSafariViewController(URL:NSURL(string:“ https://google.com”)!, entersReaderIfAvailable:true)
sfVC.delegate =自我

//呈现浏览器视图
self.presentViewController(mySafariVC,动画:true,完成:无)

}

//删除SafariViewController的委托方法
func safariViewControllerDidFinish(控制器:SFSafariViewController)
{
dismissViewControllerAnimated(true,完成:无)
}
}

这将产生以下结果(请注意“ 完成”按钮将用户直接带回应用程序):

异常处理和延迟

在Swift 2.0中引入的开发人员可以使用do-try-catch块来处理错误。 这与Java和.Net等其他编程语言中的语言非常相似,为向常规编码迈进了可喜的一步。 开发人员还可以轻松创建自己的自定义错误类型,以清晰,有意义的名称描述错误情况。

说到Swift 2.0,苹果表示它将在今年晚些时候以开源形式发布。

3D触控

在iOS 9中,新的iPhone型号为用户界面增加了三维。 用户现在可以按主屏幕图标立即访问您的应用程序提供的功能。 用户现在可以在您的应用程序中按视图以查看其他内容的预览并获得对功能的加速访问。