一、iPad多任務(wù)功能增強
1、全新的多任務(wù)界面
在iOS 9中,多任務(wù)界面從原來的橫向單層排列進化成層疊排列,從而減少滾屏手勢距離,從而加快多任務(wù)切換速度。效果如圖:

2、多任務(wù)分屏功能
在iOS 9中,可以讓用戶在不離開當(dāng)前應(yīng)用的同時,通過側(cè)滑手勢來打開第二個App。目前該功能只支持iPad Air 2設(shè)備。
分屏功能涉及兩部分功能:
* Slide Over- 讓我們可以在不離開當(dāng)前應(yīng)用的同時就可以打開第二個應(yīng)用程序,兩個應(yīng)用程序會同時顯示在iPad的屏幕上。
* Split View- 放入兩個App的顯示容器,可以任意切換兩個屏幕的比例(五五分屏; 三七分屏)。
注:該功能由用戶觸發(fā),開發(fā)者無法干涉該過程,但是開發(fā)者需要做好下面兩件事情:
1.由于系統(tǒng)在內(nèi)存缺乏的情況下,系統(tǒng)會優(yōu)先結(jié)束掉占用內(nèi)存較大的應(yīng)用程序。因此,要控制好自己開發(fā)的應(yīng)用所占用的資源(包括內(nèi)存占用、CPU占用等)。
2.使用Size Classes來適配屏幕。
3、畫中畫(Picture in Picture, 簡稱PiP)功能
假如你正在觀看一個視頻,但突然要用iPad干別的事情,那么現(xiàn)在你不用關(guān)閉這個視頻了,只需要將這個視頻轉(zhuǎn)換成浮動窗口,并隨意改變它的大小以及顯示位置,接下來你就可以打開別的應(yīng)用而不會影響視頻的顯示了。

開發(fā)者可以通過使用AVKit.framework中的AVPictureInPictureController和AVPlayerViewController類來實現(xiàn)畫中畫功能。(參考:Multitasking Enhancements for iPad)
注:AVFoundation.framework也有加入相關(guān)的PiP特性。但是在MediaPlayer.framework不支持PiP特性并且被標(biāo)記為棄用。
二、搜索優(yōu)化與增強
iOS 9開放了搜索的API,為用戶提供了可以訪問應(yīng)用內(nèi)部信息的搜索功能,當(dāng)開發(fā)者設(shè)置應(yīng)用的內(nèi)容可以被搜索時,用戶可以通過Spotlight、Safari搜索結(jié)果、Handoff或者Siri建議中訪問到你應(yīng)用中的內(nèi)容信息。
使用搜索API可以決定應(yīng)用中哪些內(nèi)容會被索引,在搜索結(jié)果中顯示什么信息,并且可以監(jiān)聽用戶在自己應(yīng)用或者網(wǎng)站上點擊的結(jié)果來進行重定向操作。
在搜索中可能會涉及到用戶的隱私信息,為了讓用戶得到好的搜索體驗并能能夠保護自己的隱私,iOS 9中有包含兩種索引方式:
1、個人設(shè)備索引 - 每個設(shè)備都包含一個這樣的索引,并且該索引的信息不會與蘋果服務(wù)器或者其他設(shè)備進行共享。當(dāng)搜索項加入這個索引中,那么只有該設(shè)備的用戶才能夠進行搜索。
2、蘋果服務(wù)器索引 - 該索引只會存儲開發(fā)者在網(wǎng)站上標(biāo)記公開的數(shù)據(jù)。
開發(fā)者可以通過下面API來建立屬于自己的內(nèi)容搜索:
1、NSUserActivity-NSUserActivity API是iOS 8介紹新功能Handoff時引入的,不過在iOS 9里,Spotlight也能搜索到activity。你現(xiàn)在可以給acitivity提供metadata,表示這個activity是能搜到的。實際用起來是一個歷史記錄棧,跟你平常瀏覽網(wǎng)頁類似。用戶可以從Spotlight里快速打開最近使用過的activity。
2、Web Markup-Web Markup的機制是,app可以把內(nèi)容鏡像到一個網(wǎng)站上,然后Spotlight就會索引里面的內(nèi)容。即使用戶設(shè)備上沒裝這個app,Spotlight里也能顯示出搜索結(jié)果。蘋果的爬蟲會在網(wǎng)絡(luò)上持續(xù)爬取,尋找網(wǎng)站上的特定markup。之后搜索結(jié)果在Safari里和Spotlight里都會出現(xiàn)。
3、CoreSpotlight-CoreSpotlight是一個iOS 9的新框架,能讓你索引app里的任何內(nèi)容。之前提到的NSUserActivity可以用來保存用戶的歷史信息,而這個新的API可以索引任何數(shù)據(jù)。它為你接觸到用戶設(shè)備上的CoreSpotlight索引提供了必不可少的橋梁。
三、游戲技術(shù)的優(yōu)化和改進
1、GamePlayKit
GamePlayKit是一個幫助新手開發(fā)者們在OS X和iOS平臺創(chuàng)作游戲的基礎(chǔ)工具和技術(shù)框架,可提供游戲資源、模塊、玩法設(shè)計以及系統(tǒng)規(guī)則方面的內(nèi)容,并不包括視覺渲染等功能。其中包括:
1、隨機化(Randomization) - 使用GKRandom協(xié)議、GKRandomSource以及GKRandomDistribution class,而且還有更多獨特的子類來增加游戲玩法的不確定性,同時不會增加BUG調(diào)試量。
2、實體組件系統(tǒng)(Entity-component architecture)- 實體組件系統(tǒng)是一種非常流行和先進的組織游戲邏輯的方式,采用它編寫的游戲代碼,更容易維護,更容易擴展,同時也更加靈活。
3、狀態(tài)機(State Machines)-狀態(tài)機是游戲玩法的骨架,游戲本身就是由一系列的狀態(tài)機組成的。比如主角動畫,AI狀態(tài),UI切換,關(guān)卡切換等,這些都可以使用狀態(tài)機巧妙地解決。GamePlayKit通過封裝了GKStateMachine和GKState類,把一些共用的邏輯全部抽象出來了,開發(fā)者再也不用為每一個游戲去開發(fā)單獨的狀態(tài)機了。
GamePlayKit還包含了一些常見的游戲算法,可以使開發(fā)者節(jié)省開發(fā)這些算法的時間,并投入更多的時間來研究游戲中的獨特玩法機制。其中算法實現(xiàn)如下:
1、AI策略(Minmax Strategist) -MinMax AI主要用于一些回合類游戲,比如象棋,圍棋,Tic-Tac-Toe等。它還能給人類玩家提供一些建議,比如告訴你下一步棋該怎么下。另外,通過計算時間的設(shè)置,AI可以定義不同的難度等級。 其中的GKMinmaxStrategist類為這些回合制游戲中的敵人提供AI設(shè)計。
2、代理、目標(biāo)和行為 -Agent指的是會自已移動的游戲?qū)嶓w,它們通過Goal和Behavior來驅(qū)動自身的邏輯。Behavior是由一系列的Goal組成的,每一個Goal都包含有相應(yīng)的權(quán)重。Agent在與玩家進行游戲交互的時候,可以表現(xiàn)得更像人類,因為它們也會做決策。以往只有在一些很復(fù)雜的游戲里面才會看到的AI,如今通過GamePlayKit,我們可以非常輕松地給自己的游戲也添加了。通過給游戲里面的怪物添加一些AI,能夠極大地增強游戲的趣味和粘性。
3、規(guī)則系統(tǒng)-可以制作更加復(fù)雜的游戲AI,游戲世界的交互不再是“黑即是黑,白即是白”,而是以事先定義好的一定的規(guī)則去交互。游戲AI可以實現(xiàn)所謂的模糊邏輯,游戲怪物的活動可以根據(jù)定義好的規(guī)則系統(tǒng)去動態(tài)地調(diào)整和評估自己的行為。通過使用GKRuleSystem和GKRule類來制定復(fù)雜的游戲邏輯,包括模糊推理(fuzzy reasoning)以及應(yīng)急行為。
4、尋路算法 - 可以讓指定一些節(jié)點生成一個雙向連接圖,然后可以通過簡單的API調(diào)用找到任意兩個點之間的最優(yōu)路徑。所有的有向圖的基類是GKGraph,它是一個抽象類。它提供一些共用的邏輯,比如動態(tài)地添加和刪除節(jié)點,連接這些節(jié)點并找到任意兩個節(jié)點之間的路徑。此外,GamePlayKit還提供了兩種特殊類型的圖節(jié)點:GKGridGraph和GKObstacleGraph。GKGridGraph非常適合2D游戲里面的路徑查找。而GKObstacleGraph則可以設(shè)置一些障礙物,節(jié)點在尋路的時候,這些障礙物是無法穿越的。SKNode的邊界,物理剛體和紋理都可以當(dāng)作障礙物。
5、隨機數(shù)發(fā)生器 - 每個游戲都有一些特別的隨機數(shù)生成需求,而rand()函數(shù)只能生成一些偽隨機數(shù),并且可能跟平臺實現(xiàn)還有一些出入。作為開發(fā)者,我們需要一個與具體平臺無關(guān)的隨機數(shù)生成器,另外這個隨機數(shù)生成器還能產(chǎn)生符合一定數(shù)學(xué)分布的隨機數(shù)。
2、ModelI/O
Model I/O是用處理3D資源和數(shù)據(jù)的框架,我們可以通過Model I/O快速地加載和導(dǎo)出3D資源文件。另外,它集成在Xcode里面并且和可以非常容易地與GameKit API配合。它的主要功能特性如下:
1、支持多種3D文件格式的導(dǎo)入導(dǎo)出。
2、可以對資源進行修改和Bake。
3、支持3D模型三維像素化(Voxels)。
4、集成Playground, Swift和Finder,并且能夠在Finder的Quick look里面預(yù)覽資源。
5、支持基于物理的材質(zhì)和光照。
6、結(jié)合MetalKit,、GLKit或者SceneKit提供的API來裝載資源數(shù)據(jù)到GPU的緩沖區(qū)進行渲染。
3、MetalKit
MetalKit.framework提供了一組工具類和函數(shù),目的在于節(jié)省開發(fā)Metal應(yīng)用的時間,讓Metal開發(fā)變得更加簡單。
MetalKit對于一些常見的應(yīng)用場景提供了高效的實現(xiàn),開發(fā)者可以用更少地代碼來開發(fā)應(yīng)用,并且開發(fā)出來的應(yīng)用性能和穩(wěn)定性會更高。
MetalKit提供了一個MTKView類,它統(tǒng)一處理了渲染一個Metal場景所需要的設(shè)置代碼,另外,它提供了一個紋理加載器,它可以從一個圖片文件中創(chuàng)建一個Metal紋理。最后,MetalKit完美支持Model I/O,讓3D模型的處理更加簡單。
4、MetalPerformance Shaders
Metal performance shader是一個為GPU提供數(shù)據(jù)并行算法的一個框架,目前只支持A8處理器。
它定義了一些類似操作CPU風(fēng)格的API,這樣可以讓GPU編程變得更加簡單。它提供了很多內(nèi)置的并行算法,比如蘭索斯重新取樣(Lanczos resampling),卷積函數(shù)(比如高斯濾鏡等),直方圖等。
5、Metal新特性
1、新的內(nèi)存模型:它一共支持3種內(nèi)存模型,分別是共享內(nèi)存模型,私有內(nèi)存模型和托管內(nèi)存模型。
2、新的紋理壓縮格式(ASTC)
3、設(shè)備GPU類型判斷:自動根據(jù)設(shè)備的GPU類型來判斷支持的特性集合。
4、MetalKit框架:讓Metal應(yīng)用開發(fā)更加簡單方便。
5、Metal performance shader框架:提供了一系列數(shù)據(jù)并行算法。
6、Metal調(diào)試工具:更方面地調(diào)試Metal圖形應(yīng)用。
7、Metal應(yīng)用程序瘦身:這一點和上面介紹的SpriteKit瘦身原理是一樣的。
6、SceneKit新特性
SceneKit是蘋果為了讓游戲開發(fā)者更方便地開發(fā)3D游戲而推出來的,它支持iOS和MacOS X。同時,它還完美支持粒子系統(tǒng),物理集成和SpriteKit。iOS9中改進了場景編輯器,同時對Metal的支持也更加完善了。場景編輯器功能總結(jié)如下:
1、支持更多的3D文件格式:DAE,OBJ,Alembic, STL和PLY文件格式。
2、新的原生文件格式,使用NSKeyedArchiver來存取
3、Shader修改器和環(huán)境光遮蔽(Ambient Occlusoni)
4、天空盒(Skybox)和幾何修改器
6、支持聲音節(jié)點
7、支持Model I/O
除了這7點以外,還有諸如compute shader、relfective cub map等功能。新的SceneKit可以根據(jù)設(shè)備類型自動匹配是否使用OpenGL或Metal作為渲染后端,同時它支持SpriteKit的場景切換,制作SceneKit場景切換效果更容易了。
7、SpriteKit新特性
1、資源分類(Asset catalog)支持,開發(fā)者可以更精確地控制不同設(shè)備使用的資源分辨率,最重要的是,玩家在下載游戲到設(shè)備里面時,只會下載與其設(shè)備分辨率匹配的資源。
2、按需加載資源,通過給不同的資源設(shè)備Tag,可以指定某些場景和關(guān)卡只加載特定Tag的資源。
3、XCode快速預(yù)覽:支持在Playgound里面使用Swift編寫一些測試代碼,然后快速預(yù)覽效果。不需要額外的編譯,立馬就可以看到API的使用效果,這對于測試一些API和驗證一些想法非常有幫助。
4、2D時間軸動作編輯器:這個應(yīng)該算是SpriteKit的大殺器了,它是一個功能完善的2D動作編輯器,可以支持實時預(yù)覽動作效果,并且同時支持2D和3D。
5、數(shù)據(jù)驅(qū)動:SKReferenceNode可以讓可重用的游戲組件數(shù)據(jù)化,讓玩家可以用更少的代碼來完成游戲開發(fā)。
6、Metal渲染支持。
7、相機節(jié)點(SKCameraNode):更容易創(chuàng)建滾動游戲。
四、App瘦身
這項功能可以讓iOS設(shè)備在很多安裝應(yīng)用、更新應(yīng)用以及運行應(yīng)用等多種場景中僅下載需要的代碼而不是所有的資源,這樣iOS應(yīng)用占用的空間就會減少很多,從而節(jié)省出更多的剩余存儲空間。
App Thinning功能中其實有三個獨立的機制:
1、App Slicing- 在節(jié)省應(yīng)用所需資源中發(fā)揮著最重要的作用。很多應(yīng)用需要在不同尺寸的設(shè)備上運行,針對這些不同的設(shè)備,它們內(nèi)含不同的獨立資源,而大部分是你的設(shè)備不需要的。有了App Slices,開發(fā)者就可以根據(jù)設(shè)備添加資源標(biāo)簽,當(dāng)用戶從iTunes下載應(yīng)用時,它將僅僅下載當(dāng)前設(shè)備需要的資源。
2、ODR -(on-demand resources按需應(yīng)變資源)是iOS減少應(yīng)用資源消耗的另外一種方法。比如多級游戲,用戶需要的通常都是他們當(dāng)前的級數(shù)以及下一級。ODR意味著用戶可以下載他們需要的幾級游戲。隨著你的級數(shù)不斷增加,應(yīng)用再下載其他級數(shù),并將用戶成功過關(guān)的級數(shù)刪掉。
3、Bitcode -使得開發(fā)者上傳應(yīng)用程序時不必提交預(yù)編譯的二進制文件,只需要上傳中間代碼即可。而用戶下載時,App Slicing可以根據(jù)用戶需求,來判斷你是需要32位還是64位。也就是說,在用戶下載應(yīng)用之前,App Store在自動編譯應(yīng)用程序。這樣,即使開發(fā)者沒有給他們的代碼添加標(biāo)簽,應(yīng)用也能夠執(zhí)行App Slicing的部分功能,僅下載設(shè)備需要的32或64位代碼。
五、支持從右至左的語言(RTL)
iOS 9中支持從右至左的語言支持,可以很輕易地使一個用戶界面進行翻轉(zhuǎn)。包括:
1、現(xiàn)在所有的UIKit中的控件都支持對這種語言的顯示與輸入。只要在RTL上下文中即可實現(xiàn)翻轉(zhuǎn)。
2、UIView定義了語法內(nèi)容屬性(semantic content attributes)來指定視圖如何顯示在一個RTL上下文中。
3、UIImage新增了方法imageFlippedForRightToLeftLayoutDirection,可以很方便的將圖片翻轉(zhuǎn)。
六、App傳輸加密(ATS)
App Transit Security,簡稱ATS,也就是我們所說的HTTP升級至HTTPS傳輸。iOS 9與OS X 10.11以后版本已經(jīng)默認使用ATS,而蘋果也要求我們盡快采用ATS。ATS的好處是加強數(shù)據(jù)安全(客戶端與服務(wù)器之間的數(shù)據(jù)傳輸),防止信息泄露。關(guān)于HTTPS參閱TSL/SSL規(guī)范。如果我們的服務(wù)器端還來不及做相關(guān)升級,那么客戶端可以暫時回滾至不安全的網(wǎng)絡(luò)請求方式(依然使用HTTP),當(dāng)然蘋果不提倡長期這樣做。具體的設(shè)置方法:在info.plist中添加:

七、App擴展
iOS 9中提供幾種新的應(yīng)用擴展:
1、網(wǎng)絡(luò)擴展
1、使用Packet Tunnel Provider extension point來實現(xiàn)自定義VPN通道協(xié)議客戶端。
2、使用App Proxy Provider extension point來實現(xiàn)一個透明網(wǎng)絡(luò)代理協(xié)議客戶端。
3、使用Filter Data Provider和Filter Control Provider extension points來實現(xiàn)動態(tài)的設(shè)備端網(wǎng)絡(luò)內(nèi)容過濾。
注:每個網(wǎng)絡(luò)擴展,需要蘋果公司許可。
2、Safari擴展
使用Shared Links extension point來讓用戶通過Safari的分享鏈接看到你的內(nèi)容。
使用Content Blocking extension point提供一個屏蔽列表,讓你的用戶使用你的App瀏覽Web內(nèi)容時屏蔽指定的內(nèi)容
3、Spotlight擴展
使用indexing extension point對App內(nèi)的數(shù)據(jù)進行索引。
使用Index Maintenance extension point實現(xiàn)在不重啟App的情況下對App內(nèi)的數(shù)據(jù)重新建立索引
4、Audio Unit extension point允許App提供類似于GarageBand,Logic等App提供的樂器演奏,音頻特效,聲音合成功能。
八、Contactsand Contacts UI
Contacts.framework和ContactsUI.framework這2個新的面向?qū)ο蟮膸烊〈酥暗腁ddress Book與Address Book UI frameworks來對通訊錄進行相關(guān)操作。
九、WatchConnectivity
WatchConnectivity.framework提供iPhone和與之配對的Apple Watch之間進行雙向的文件、數(shù)據(jù)傳輸。這套框架能夠讓配對的兩個設(shè)備上同時運行的App進行即時通信,也可以進行后臺通信。
十、鑰匙串
iOS9中支持更多的項目保護選項和增加一項屬于Secure Enclave的加密密鑰。做了若干安全方面的改進:
1、keychain中敏感數(shù)據(jù)的物理存儲位置已經(jīng)遷到Secure Enclave(iOS設(shè)備上自5s開始增加的一個協(xié)處理器)中。
2、Keychain的訪問屬性kSecAttrAccessibleAlways將被棄用。
3、當(dāng)使用TouchID來保護Keychain中的數(shù)據(jù)時,可以通過touchIDAuthenticationAllowableReuseDuration來指定TouchID驗證的間隔,間隔期之內(nèi)可以免驗證讀取Keychain數(shù)據(jù)
4、新增允許創(chuàng)建一個只需要Touch ID或者密碼就能訪問控制列表的約束。
5、新增當(dāng)添加或者刪除指紋時無效鑰匙串項的TouchID約束。
6、為了從SecItem調(diào)用中分離認證調(diào)用,提供了一個認證的上下文。
7、使用kSecAttrTokenIDSecureEnclave屬性可以在Secure Enclave中生成密鑰并在內(nèi)部使用該密鑰。需要注意的是訪問這些密鑰會被所訪問的控制列表約束。
8、支持以使用訪問控制列表中的Application Password選項為鑰匙串項加密的應(yīng)用提供信息熵
十一、Swift加強
iOS9中Swift將包含在系統(tǒng)內(nèi),這意味著在iOS9中,安裝Swift語言編寫的應(yīng)用并不需要更多的空間。
蘋果為iOS、OS X和Linux平臺推出了Swift編譯器和標(biāo)準(zhǔn)庫,并基于開源協(xié)議進行發(fā)布。
錯誤處理方面的變化,Apple從Cocoa傳統(tǒng)的基于NSError錯誤處理方式變?yōu)榱藅hrow catch的異常處理機制。
新加了一些像是guard和defer這樣的控制流關(guān)鍵字,這讓Swift的書寫更加簡化,閱讀起來更流暢。
加入了avaliable塊,以前開發(fā)者需要自己去記憶API的可用性,并通過檢查系統(tǒng)版本并進行對比來做這件事情?,F(xiàn)在有了avaliable檢測,編譯器將會檢查出那些可能出現(xiàn)版本不匹配的API調(diào)用,app開發(fā)的安全性得到了進一步的保障。
十二、系統(tǒng)框架改動
1、AVFoundation Framework
增加了新的AVSpeechSynthesisVoice API,它使開發(fā)者可以通過標(biāo)識代替之前的語言標(biāo)識來指定一個語音。也可以使用名稱和質(zhì)量屬性來獲取語音信息。
2、AVKitFramework
使用AVPictureInPictureController和AVPlayerViewController類,實現(xiàn)Picture in Picture功能。
3、CloudKitFramework
對于CloudKit應(yīng)用程序,開發(fā)者可以使用CloudKit的Web Services或CloudKit JS,他是一個JavaScript庫,為應(yīng)用用戶訪問相同數(shù)據(jù)提供了網(wǎng)絡(luò)接口。開發(fā)者必須要有一個已經(jīng)創(chuàng)建好的數(shù)據(jù)庫結(jié)構(gòu),才能使用網(wǎng)絡(luò)接口來獲取、創(chuàng)建、更新和刪除這些記錄、區(qū)域或者訂閱。
4、FoundationFramework
包括以下增強功能:
1、用于按需加載一個NSBundle資源API。
2、Strings文件的上下文相關(guān)的可變寬度的字符串支持。
3、增加電源和散熱管理的NSProcessInfo API
5、HealthKitFramework
包括以下增強功能:
1、對跟蹤生殖健康和紫外線照射的等新領(lǐng)域的支持。
2、新增批量刪除條目和跟蹤刪除條目功能。
6、LocalAuthentication Framework
包括以下增強功能:
1、可以獲得一組當(dāng)前登記的指紋標(biāo)識,使應(yīng)用程序能夠根據(jù)指紋登記或者刪除來執(zhí)行相應(yīng)的操作。
2、支持通過代碼來取消用戶提示。
3、支持評估鑰匙串訪問控制列表,并在鑰匙串調(diào)用中使用的認證上下文。
4、支持可重復(fù)使用的觸摸ID匹配??梢允褂胑valuateAccessControl:或者evaluatePolicy:localizedReason:reply:.獲取前一個手機解鎖的匹配。
7、MapKitFramework
MapKit框架對功能進行了一些補充,可以幫助您提供更豐富的用戶體驗。具體包括:
1、支持查詢公交的預(yù)計到達時間和公交路線。
2、地圖視圖支持了3D天橋模式。
3、注釋可以完全定制。
4、MapKit和CLGeocoder可以為搜索結(jié)果提供時區(qū)信息。
8、PassKitFramework
PassKit框架在Apple Pay中包括幾個附加功能的增強。具體包括:
1、Apple Pay支持Discover cards、借記卡和信用卡。
2、發(fā)卡機構(gòu)和支付網(wǎng)絡(luò)可以直接在他們的應(yīng)用程序中添加卡到Apple Pay中。
9、SafariServices Framework
包括以下增強功能:
1、SFSafariViewController可以用來顯示你的應(yīng)用程序中的網(wǎng)頁內(nèi)容。它和safari共享Cookie和其他網(wǎng)站數(shù)據(jù),并有許多的Safari瀏覽器的強大功能,如Safari自動填充和Safari閱讀器。與Safari瀏覽器本身相比,SFSafariViewController UI是一個單一的Web頁面,有一個完成按鈕可以使用戶回到應(yīng)用程序中。
2、如果您的應(yīng)用程序顯示的網(wǎng)頁內(nèi)容,但不自定義內(nèi)容,可以考慮更換WKWebView或UIWebView為SFSafariViewController。
10、UIKitFramework
UIKit框架包括許多增強功能,如:
1、UIStackView類實現(xiàn)一組垂直或水平堆疊的視圖。
2、新增UIView布局(如leadingAnchor和widthAnchor)NSLayoutAnchor和NSLayoutDimension。
3、新增UILayoutGuide類,幫助開發(fā)者對視圖的一個區(qū)塊進行布局。
4、新增UIApplicationDelegate的一個方法,該方法可以使開發(fā)者以非副本形式打開或者修改一個文檔。要支持open-in-place功能,需要再應(yīng)用程序也的Info.plist文件中增加LSSupportsOpeningDocumentsInPlace鍵并設(shè)置為YES。
5、使用UITextInputAssistantItem類來布局在快捷欄的按鈕。
6、增強觸摸事件,例如能夠獲取最后一次屏幕刷新時發(fā)生的觸摸行為并作出觸摸預(yù)測
7、增強的UIKit動力學(xué),如用于非矩形碰撞邊界檢測等。
8、UIUserNotificationAction類中新增behavior屬性,可以讓開發(fā)者在用戶通知中進行文本輸入。
9、新增NSDataAsset類,使得更加方便獲取定制設(shè)備的內(nèi)存和圖形處理能力。
10、所有標(biāo)準(zhǔn)的UIKit控件翻轉(zhuǎn),能夠支持從右到左的語言。此外,導(dǎo)航,手勢,Collection View和TableViewCell的布局也適當(dāng)?shù)胤D(zhuǎn)。
11、棄用API
Address Book和Address Book UI frameworks。取而代之的是Contacts和Contacts UI frameworks。
參考地址:https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW1