你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> iOS 版本更新摘要(三)iOS 8.x

iOS 版本更新摘要(三)iOS 8.x

編輯:IOS技巧綜合
[摘要]本文是對iOS 版本更新摘要(三)iOS 8.x的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

[What's New in iOS 8.x](https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html#//apple_ref/doc/uid/TP40014205-SW1 "What's New in iOS 8.x")

####iOS 8.0

#App Extensions

iOS 8.0 提供了 app 擴展點,讓你可以在系統的選擇區域擴展選擇區域。這是通過代碼實現的,在用戶當前任務的上下文中,可以做一些自定義的功能。例如:你可以提供一個擴展點讓用戶發送內容到你的社交網站上。當用戶安裝和啟用這個擴展點之後,他們在選擇分享的時候,你的分享擴展點提供的功能就可以接受、驗證並發布用戶的內容了。當用戶選擇分享時,系統的分享菜單負責實例化並展示你的擴展。

在 Xcode 中,你可以通過創建一個預配置的擴展點 target 到你 app 中。當用戶安裝了你的 app 後,也就安裝了你的擴展點。然後用戶可以在系統的 Setting App 中啟用這個擴展點。當用戶使用其他 app 的時候,系統可以確保這些被啟動的擴展點會有合適的系統 UI 界面去展示,例如分享菜單。

已知的拓展點有以下幾個:(iOS 8.0 有6個,現在則更多)

1. Share:分享內容到社交網站或者其他地方;

2. Action:對選中的內容執行一個簡單的任務;

3. Today:在通知中心的 Today 頁面,提供一個快速更新操作或者一個簡報任務;

4. Photo editing:在 Photos App 裡面處理圖片或者視頻;

5. Storage provider:提供一個文件本地存儲空間,這個可以被其它 apps 所訪問。這裡面的文件被訪問,也可以添加文件進來;

6. Custom keyboard:用戶在系統-鍵盤裡面選擇全局鍵盤時,可以選自定義的。

每一種擴展點,針對各自的用途都定義了相關的 APIs。當你用某一個擴展點的模板時,你會獲得一個默認的 target,以及該擴展點相關的一些預置方法和參數列表。

#Touch ID Authentication

現在你可以使用 Touch ID 來驗證用戶了。有一些 app 可能需要安全驗證才能開放全部功能;而另外一些可能是需要通過驗證來獲取一些信息或者其它內容。在某些情況下,你可以要求用戶先認證再使用 app。

1. 你可以用 touch ID 來解鎖 keychain 中的個人項目;

2. 使用 LocalAuthentication.framework 可以讓你在需要用到認證的時候,彈出一個 alert。當你的 app 收到這個操作的反饋時,可以根據結果來處理一些事務。

#Photos

新的 photos App 讓你可以獲取到更好的照片。它通過提供新的編輯能力,新的創建方式和更高效的工作流來獲取用戶的照片和視頻資源。

###Photos Framework

Photos.framework 提供了新的 APIs,用來處理照片和視頻資源(包括 iCloud 中被 photos App 管理的照片)。這個更強的 framework 是用來替代 Assets Library framework的。關鍵特性包括了一個線程安全的圖片及縮略圖獲取框架、資源修改請求功能、監聽其它 app 修改動作以及可還原修改內容的功能。

PhotosUI.framework 可以用來創建編輯照片和視頻的擴展點。

###Manual Camera Controls

AVFoundation.framework 讓拍好照片變得比過去更簡單了。你的 app 可以直接控制對焦、白平衡和曝光設置。除此以外,你的 app 還可以在不通的曝光設置在使用連拍。

###Improved Camera Functionality

在iPhone 6 & 6 PLUS 中,用以下的新 APIs 去發現和使用新的特性:

1. videoHDRSupported 屬性,讓你設置是否支持高動態范圍(HDR)流

2. AVCaptureVideoStabilizationModeCinematic 一個新的視頻穩定模式,可以給出更加電影化的視頻效果

3. highResolutionStillImageOutputEnabled 屬性,設置它可以讓 AVCaptureStillImageOutput 對象可以捕獲高清的靜止頁面

4. autoFocusSystem 屬性,可以用來設置系統自動曝光的樣式

#Games

iOS 8的技術進步讓你有史無前例的游戲畫面及音頻體驗提升。你可以使用容易開發的上層 framework 精心開發,也可以使用底層的 API 來 發揮 GPU 的力量。

###Metal

Metal 給了非常低開銷的方式來操作 A7 和 A8 的 GPU,而且給復雜的圖形渲染以及幾何計算授權了極其高性能支持。Metal 取消了很多操作的瓶頸,例如老的圖形處理 APIs 中的代價很高的狀態確認。Metal 的設計初衷就是為了從開發者性能敏感的渲染代碼中移除開銷很高的狀態轉變和匯編操作的邊界限制。Metal 提供了預編譯著色器和狀態對象,以及明確的指揮調度來保證你的 app 的 GPU 圖形繪制和計算的高性能高效率。這個設計理念一直延伸到構建 App 的工具裡面。當你用 Xcode 打包 app 的時候,Xcode 會將 Metal 的著色器編譯進一個默認的 library 裡面,縮減了 run time 為准備著色器所花的時間。

圖形繪制、計算和位塊傳輸命令都是為了無縫的高效的合作而設計。Metal 的設計使用了現在流行的架構,如多任務和共享內存,使得它可以並行運行 CPU 創建的指令。

使用 Metal,你就有一組精簡的 API、一個統一標准的圖形繪制和著色計算的語言和 Xcode 的工具組,你不需要學習太多 frameworks 、語言和工具,也在你的 app game 裡面能釋放 GPU 的全部能力。

###SceneKit

SceneKit 是為了構建簡單游戲和豐富 UI 交互(通過 3D 圖形)並且包含了高性能渲染引擎和描述性的上層 API 的一個基於 OC 的庫。SceneKit 早在 OS X v10.8 就可以使用了,iOS 則到當前版本才可以。許多底層 API(例如Open GL ES)需要用戶去實現一些用來描述具體場景的渲染協議。相對而言,SceneKit 可以讓你用圖形、材料、光線以及攝像頭這些場景內的物體來描述一個場景,之後通過動畫來進行相互轉換。

SceneKit 的 3D 圖形引擎通過模擬重力、作用力、剛體碰撞以及運動副使你的 app 或者游戲(頁面)更加栩栩如生。新增的上層 API 使的我們可以更加簡單的在場景中使用輪式載具(如汽車);也可以添加一個有角度的物理或磁場區域,或者一個對物體有擾動效果力場。

你可以使用 OpenGL ES 的著色器對場景內的內容進行著色,或者提供一個 GLSL 的著色器來替代或增強 SceneKit 的著色器。你還可以給 SceneKit 添加基於著色器的後置處理技術,例如色彩分級和環境光屏蔽。

###SpriteKit

SpriteKit.framework 添加了許多新的特性使得它可以更容易的支持高級的游戲特效。這些新的特性包括了對自定義 OpenGL ES 著色器和光線的支持、SceneKit 的集成以及新的高級的物理特效和動畫效果。例如,你可以使用這個類 SKFieldNode 來創建一個物理區域,這個區域可以模擬重力、阻力和電磁力的力場效應。你也可以輕易的創建出逐像素貼圖的、可碰撞物理物體。而且現在可以比以往更容易的給父類加一個物理物體,即使父類自己沒有物理物體。這些新的特性使得復雜的物理模擬變的容易實現。

你可以用約束來修改場景中的特效和動畫。例如,你可以讓一個節點一直指向另一個,不管他們怎麼動。

Xcode 6 納入了新的著色器和場景編輯器,來縮短你創建游戲的時間。當你創建好一個場景時,裡面的節點(包括屬性)、裡面的力場,都會被序列化成一個文件,這樣可以方便你的 app 加載。

###AV Audio Engine

AVFoundation.framework 提供了一個獨立的音頻功能,這比 Core Audio 的上層 API 還要抽象。這些新的音頻特性在 OS X 和 iOS 中都可以使用。包括:自動調用音頻的 IO 硬件、音頻的錄制與重播、音頻文件的解析與轉換。現在你還有權設置音頻單元的音效、波形、節奏、重播速度、立體聲、3D音效以及外接 MIDI 設備。

###OpenGL ES

iOS 8 添加了以下的新擴展:

1. APPLE_clip_distance 用來支持硬件的裁剪面操作(OpenGL ES 2.0 和 3.0)

2. APPLE_texture_packed_float 用來支持浮點型的紋理格式(R11F_G11F_B10F 和 RGB9_E5)

3. APPLE_color_buffer_packed_float 是基於 APPLE_texture_packed_float,所以新的紋理格式可以被幀緩沖對象使用。這就意味著一個 app 可以用這種方式將自己變成一個幀緩沖器。

#HealthKit Framework

HealthKit.framework 是一個新的 framework,用來監控一個用戶的健康狀態。現在有很多設備與APP都可以跟蹤用戶的健康狀態,但是都很難圖形化的顯示出來。使用了這個 framework 可以將用戶手動輸入與 app & 設備采集的信息進行匯總。這些信息集中存放在一個安全的地方,可以通過自帶的 Heath App 直接查看。

當你的 app 實現了對 HealthKit 的支持後,它可以直接提供用戶的健康信息和基本信息,而不需要實現特定健身跟蹤設備的協議。用戶則可以決定自己分享哪些健康信息給你的 app。你要用戶分享信息給你,你就可以注冊到它的通知隊列裡面,只要信息有變化都會通知你;你的 app 則可以精細的處理這些信息。例如:你的 app 可以注冊接受用戶的血壓通知,或者注冊一個僅接受血壓過高的通知。

#HomeKit Framework

HomeKit.framework 是一個新的 framework ,用來連接和控制你家裡的設備。新的設備都提供了更好的連接方式和更好的用戶體驗。HomeKit 提供了設備的標准化連接方式。

你的 app 可以通過 HomeKit 連接家裡的設備,你可以發現並配置它們。你可以編輯一些操作(單個或組合的),而且還可以通過 Siri 去觸發。還有,你的設備配置好後,你可以分享這些命令,比如臨時給一個客人。使用 HomeKit Accessory Simulator 可以測試你的 app 與設備的通訊。

#iCloud

iCloud 的這次更新會影響到一些已有 app 的交互以及其用戶。

###Document-Related Data Migration

iCloud 的基礎框架,在設備與服務器之間文件和數據進行互傳交互時,健壯性與可靠性進一步提升。當用戶安裝了 iOS 8 的系統,登錄(iCloud)進去之後,iCloud會一次性遷移數據到新的設備。這次遷移是將數據與文件copy到一個新版本的容器中,新的容器適用於 iOS 8+ 和 OS X 10.10+。而使用老版本的設備,會繼續運行在老的容器中,數據變更不與新容器的同步。

###CloudKit

CloudKit.framework 是為了讓 app 和 iCloud 傳輸數據的工具。與別的iCloud操作技術不一樣,這個庫讓你可以在傳輸時,管理所有類型的數據。使用 CloudKit 的 App 可以將數據放到一個共享的倉庫裡面,這個共享的倉庫可以和 App 綁定,即使這個設備沒有登錄 iCloud 賬戶。做為開發人員,你可以通過 iCloud 的面板,清晰的看到這個倉庫裡面數據的變動。

###Document Picker

UIDocumentPickerViewController 這個類給了在 App 沙盒以外操作文件的功能。它可以作為一個簡單的文件分享的工具,也可以作為一個復雜的工作流工具,因為它讓你可以在多個 App 中操作同一個文件。

Document picker 讓你可以獲取到多個文件容器的文件。不僅可以使用 iCloud 容器提供的文件,還可以使用實現了 Storage Provider extension 的容器內的文件。

#Handoff

Handoff 是 OS X 和 iOS 上,用來提升用戶體驗中操作連貫性的,一個重要特性。Handoff 讓用戶可以跨設備執行同一個操作。比如,你在 Mac 的 Safari 上看一篇很長的文章,當你轉到另外一個 iOS 設備上的 Safari 時,這篇文章的浏覽進度是和 Mac 同步的。Handoff 可以讓交互體驗做到無縫連接。

如果你的 App 想使用這個功能,你只需要實現一個很小的 API 就好了。這樣的話,每一個用戶正在做的事情都會放在一個對象裡面,這個對象內有恢復此次操作的關鍵數據。當用戶選擇繼續這次操作時,這個對象就會傳到需要恢復操作的設備上。為此,有一些代理會在恰當的時期去執行並更新操作狀態,例如用戶操作數據的對象剛傳到設備上的時候。

如果進行一個操作需要的數據比基礎數據多,新拉起的 app 有機會和原來的 app 建立一個數據傳輸流。文件操作類的 app 默認支持該功能,前提是操作的是 iCloud 共享的文件。

#Supporting New Screen Sizes and Scales

這段我沒有按原文直譯過來。(關鍵是我size class用的不是很好,誤導了閱讀的人就不好了,23333)

與 iOS 8 一起問世的是兩個有劃時代意義的手機型號:iPhone 6 和 iPhone 6 Plus。不過我要吐槽兩點:

1. Apple 打了自己的臉,6 系列手機無法單手操作了。(其實 iPhone 6 及後續機型輕輕雙觸 Home 鍵,就可以單手操作了,試試看吧)

2. iPhone 6 Plus 是所有 iPhone 裡面運行內存性價比最低的手機,大尺寸小內存,容易內存耗盡,閃退率最高的機型。(而大多數開發者都不處理內存警告的通知)

簡單說一下這個適配的更新吧。

1. iOS 8 開始可以使用 Metal 給 6 Plus 更好的體驗,這個估計國內沒幾個人做過。

2. Size Class,可以適配所有的尺寸,老板再也不用擔心你開發的慢了。

3. iOS 8 開始可以使用 storyboard 作為啟動頁面了,事實上你新建項目的時候就會自動生成一個。

###Traits Describe the Size Class and Scale of an Interface

iOS 8 加入了 Size Class 作為 UI 搭建的一個特性。這個特性把 頁面分成兩種:常規型(regular)和緊湊型(compact)。常規的用來代表一個大的屏幕尺寸,例如 iPad、或者一些大的視圖:iPhone 的滾動視圖。每種設備都被定義了一種 Size Class,包括橫豎屏狀態。原文有幾張示意圖,我就不貼了。

一個頁面可以關聯多種 Size Class。這個可以很好的處理下面這種情況:一個小的頁面需要在一個大頁面下展示,你可以選一個Size Class來放大圖,用另一個你喜歡的來放小圖。當然為了適配 Size Class,API有所變動:

1. UITraitCollection 這個類是用來描述一個對象的特征的集合。表征一個對象的 Size Class、縮放比例和特有平台的描述(為了合理翻譯 idiom 這個單詞,我看了好多 Apple 的文檔,最後覺得這是 Apple 用於說明不同平台語言特性的,暗指 iOS 不同運行平台的特有 API)。UIScreen、UIViewController 和 UIView 都是支持 UITraitEnvironment 的代理的,所以他們都有特征的集合。你可以檢索某個對象的特征,並可以在他變化時做一些操作。

2. UIImageAsset 這個類可以按照圖片的特性對他們進行編組管理。把帶有同一特征的相似的圖片合並到一個資源下,然後自動檢索並使這個資源正確擁有對應特征集合的圖片。為此 UIImage 也做了一些修改。

3. 支持 UIAppearance 協議的類,可以基於自己特征集合定義一個對象的外觀。

4. UIViewController 新增了查詢子頁面特征集合的能力。你可以用這個方法 viewWillTransitionToSize:withTransitionCoordinator: 去改變布局出來的頁面的 Size Class。

Xcode 6 開始支持統一的故事版。在故事版上,你可以任意操作基於每個 Size Class 的 ViewConrtoller 上面的 views。你可以使用同一個故事版構建不同的 Size Class 來做兩個相似的頁面。首先,建立一個通用的故事版,然後自定義每一個 Size Class 裡面的樣式內容。你使用 Xcode 6 來檢測 app 在各個 Size Class 下的兼容情況。

###Supporting New Screen Scales

從6 Plus 開始,高清晰度的R屏投入了使用。為了用好這塊屏幕,6 Plus 是用了 414 x 736 的Size 和 1242 x 2208 pixels的分辨率(對應3.0的Scale)。不過在顯示的時候,UIKit會把它渲染為1080P的。為了適應這個尺寸,ArtWork中需要加入 @3x 的圖片,6 Plus在加載的時候會優先加載 @3x 的素材。

在圖形app中使用 Metal 或者 OpenGL ES,可以更加容易的繪制精確圖形,而不需要其他大量的取樣。這一點對於需要高密度計算的 3D app 來說很關鍵。還有,建立渲染的緩沖區也可以很好的解決這類問題。

UIScreen 提供了一個新的屬性 nativeScale,這個屬性用來表示 native 頁面的 Scale 值。當這個值和 Screen 的 scale 屬性一樣的時候,可以按照 Screen 同樣的渲染像素尺寸進行渲染。如果不一樣的時候,你可以在顯示之前給出取樣范圍。

如果你正在寫一個 OpenGL ES 的 app,GLKView 會自動為你創建一個基於頁面 Size 和 contentScaleFactor 屬性值的緩沖區對象。當這個View被加入到window上時,需要把這個值賦值給window.screen.nativeScale。

* Listing 1:

> - (void) didMoveToWindow {

> self.contentScaleFactor = self.window.screen.nativeScale;

> }

如果你寫的是基於 Metal 的,也有和上面的類似的操作。另外,每當頁面 size 改變時,在這之前,你要讓 Metal 的 layer 給你一個新的可用區域,計算然後賦值給 drawableSize 屬性。

* Listing 2:

> CGSize drawableSize = self.bounds.size;

> drawableSize.width *= self.contentScaleFactor;

> drawableSize.height *= self.contentScaleFactor;

> metalLayer.drawableSize = drawableSize;

你可以參考 [MetalBasic3D](https://developer.apple.com/library/content/samplecode/MetalBasic3D/Introduction/Intro.html#//apple_ref/doc/uid/TP40014603). 另外,Xcode也提供了相應的模版,演示了這類操作。

#Additional Framework Changes

為了適應 iOS 8的變化,API做了以下改變。

###API Modernization

這個版本開始許多 frameworks 都有了很大的變化,他們都使用了 現代 Objective C 語法:

1. getter 和 setter 方法被屬性代替。當然現存的 getter 和 setter 還有效。

2. 初始化的方法使用 instanceType 代替過去的 id。(這一點提升其實很大,對於代碼安全來說,很好)

3. 指定初始化被聲明在所有適合的地方。

多數情況下,你不需要改變你的代碼。但是如果你適配了現代 Objective C 的代碼,你將在 Swift 交互時獲得有更好的體驗。[Adopting Modern Objective-C](https://developer.apple.com/library/content/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html#//apple_ref/doc/uid/TP40014150 "Adopting Modern Objective-C")

###AV Foundation Framework

AVFoundation.framework 允許你在拍攝的時候獲取元數據。任意類型的元數據都可以嵌入的視頻記錄各個時間點中。也就是說,你可以移動拍攝的設備中寫入物理坐標。(所以照片信息裡面是可以查到拍攝時的地理位置的,各位妹子當心哦)

###AVKit Framework

AVKit.framework 以前只在 OS X 中提供,現在在 iOS 上用來替換 MediaPlayer.framework 作為視屏播放器。

###CoreAudioKit Framework

新的 CoreAudioKit.framework 簡化了使用 inter-app 視頻時界面搭建的操作。

###Core Image Framework

CoreImage.framework 做了以下的改變:

1. 你可以在 iOS 中創建自定義圖像內核。

2. Core Image 的探測器可以識別圖片中的矩形和二維碼。

###Core Location Framework

CoreLocation.framework 做了以下的修改:

1. 你可以定位到 iPhone 在一個高樓的哪個樓層裡。

2. 訪問服務給了需要位置信息(這些信息是用戶關心的)的 app 一種新的重要位置變化服務。

###Core Motion Framework

CoreMotion.framework 提供了兩個新的 class(CMAltimeter and CMAltitudeData)用來連接 6 和 6 Plus 的氣壓計。在這個兩個設備上,你還可以用 CMMotionActivity 實例來判斷用戶是不是在自行車上。

###Foundation Framework

Foundation.framework 這個版本做了以下的增強:

1. NSFileVersion 這個類可以讓你訪問 iCloud 文件的歷史版本。這些歷史版本存在 iCloud 裡,你可以請求下載。

2. NSURL 支持存儲縮略圖(它可以被當成元數據)。

3. NSMetadataQuery 這個類可以搜索你在 app 中打開過的其他 iCloud 文件。

###Game Controller Framework

GameController.framework 做了以下的修改:

1. 如果你連接了設備,你可以在 GameController.framework 裡直接獲取設備的運動信息。

2. 如果你必須要知道是否按住了 button 而不需要知道按壓強度,僅當你的 button 狀態變化時,會有一個新的句柄供處理。

###GameKit Framework

GameKit.framework 改了這些東西:

1. 那些 iOS 7 加入的特性現在被加入了 OS X 10.10,跨平台運行的游戲可以更加容易的用這些特性。

2. 新的 GKSavedGame 類以及 GKLocalPlayer 裡面新的方法讓開發者更容易保存用戶的進度。這些數據存在 iCloud 中,GameKit 會在必要的時候同步兩端的數據。

3. 用於標記用戶的方法和屬性被廢棄了。使用 GKPlayer 對象去標記用戶,新的方法和屬性已經被加了進去。

###iAd Framework

iAd.framework 加了一些新的東西:

1. 如果你用了 AVKit 播放視頻,你可以在開始播放前加滾動廣告。

2. 你可以獲取更多你的 app 中廣告有效性的信息。

###Media Player Framework

MediaPlayer.framework 很多類給出更多的元數據。

###Network Extension Framework

NetworkExtension.framework 可以控制和配置 VPN。

###SpriteKit Framework Changes

SpriteKit.framework 新增了很多新的特新:

1. SKShapeNode 實例可以讓你給模型指定一種紋理,描邊的或者填充的都行。

2. SKSpriteNode、 SKShapeNode、 SKEmitterNode、和 SKEffectNode 這些了類現在都支持自定義渲染。使用 SKShader 和 SKUniform 可以編譯基於 OpenGL ES 2.0 的片段著色器,並可以輸入數據給著色器。

3. SKSpriteNode 可以提供光照信息,因此 SpriteKit 自動合成了光影效果。

4. SKFieldNode 可以讓你在場景中使用物理特效。例如:磁場、拖動效果、甚至合成隨機動效。對於場景內的動效,你可以細細的對力度和作用力的距離降落比進行調優。區域內的節點,讓你更容易的加入力場。

5. 全新的 SK3DNode 可以將 SceneKit 場景當成精靈集成到到你的 app 中。每次 SceneKit 渲染頁面時,它會優先渲染 3D 節點,生成紋理,然後把紋理加在精靈上。創建 3D 精靈可以讓你免去建立很多幀動畫來實現效果。

6. 新增了許多動作,包括逆運動學的。

7. 場景處理中新增了一套約束系統。SceneKit 在物理模擬後提供了一些約束,你可以用他們來設置節點的位置和方向。例如,你可以用約束讓一個節點一直朝向另一個。約束是你更加容易的實現渲染,而不需要手動調整。

8. 場景可以實現 runloop 所有階段的代理,不需要作為 SKScene 的子類。

9. SKView 提供了更多的調試信息,你也可以給出更多的渲染新能的提示。

10. 你可以為光影和力場效果創建的表層紋理(內嵌的著色器也行)。使用 SKMutableTexture 可以創建動態更新內容的紋理。

11. 你可以在運行時從紋理集合中生成地圖集。

Xcode 6 還包含了很多新的 SpriteKit 的編輯器。你可以直接創建和編輯場景內的東西,包括場景內節點的本體和其他它們的屬性。場景會直接序列化成一個可以直接加在的文件。這些編輯器會節省你的時間,因為一般人不會去用自定義的編輯器創建資源。

###UIKit Framework

UIKit.framework 有了以下的增強:

1. app 遠端或本地推送都需要通過 UIUserNotificationSettings 對象,告知用戶明確的提示類型。這個注冊過程從原來的遠程通知(APNs)中分離了出來,並且需要用戶授權才能開啟對應的提示。

2. APNs 和 本地推送都可以增加自定義的操作。你可以在操作觸發時進行對應的處理。本地通知還可以被地理位置觸發。

3. Collection Views 支持動態布局。比如文本的在多場景的自適應。此外,它還支持獨立的個性配置,用來提升性能。

4. UISearchController 替換了 UISearchDisplayController ,用來管理搜索相關的頁面。

5. UIViewController 支持 SizeClass。

6. UISplitViewController 支持 iOS 設備了(以前是 iPad 獨享的)。這個類為可用的頁面調整了他的彈出層。並且他還改動了顯示和隱藏主頁面的方式,讓你更容易的去操控它的子頁面。

7. UINavigationController 現在有新的方式去改變bar的高度和顯示與否。

8. 新的 UIVisualEffect 這個可以做毛玻璃效果了。

9. 新的 UIPresentationController 讓你可以讓你將一個頁面的內容按顯示的他們的紋路(chrome:鉻)分開。

10. 新的 UIPopoverPresentationController 用來處理彈出窗的內容。現存的 UIPopoverController 用來在 screen 上彈出的控制器。

11. 新的 UIAlertController 替換了 UIActionSheet 和 UIAlertView,你可以為你的 app 選擇對應的提示方式。

12. 新的 UIPrinterPickerController 提供了一個類似 viewController 的頁面,展示畫筆的選擇列表。畫筆實例基於新的 UIPrinter 類創建。

13. 你可以通過 openURL 打開 UIApplicationOpenSettingsURLString 直接到 app 的設置頁面。

###Video Toolbox Framework

VideoToolbox.framework 可以直接硬編碼解碼了。

###Webkit Framework

一個嶄新的框架,一堆類被加了進來。它可以輕松的制作高性能的使用 web 內容的 app。

#Deprecated APIs

以下的API被廢棄了:

1. 注冊通知功能。

2. UIViewController 與 Size Class 相同作用的一些屬性。你需要完整的看一下上文的 [Traits Describe the Size Class and Scale of an Interface](https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html#//apple_ref/doc/uid/TP40014205-SW30 "Traits Describe the Size Class and Scale of an Interface")這個版塊。

3. UISearchController 替換了 UISearchDisplayController。

4. GameKit 中用來表示用戶信息的字段和方法。

####iOS 8.1

#Apple Pay

這個版本就加了一個 Apple Pay。 PassKit framework 裡面添加了相關的接口(包括支付方式和支付請求)。

####iOS 8.2

#Apple Watch

iOS 8.2 開始你可以用 Apple Watch 和你 手機裡的 app 交互。當然 Xcode 也支持 WatchKit app 的開發。這些 app 可以快速簡潔的獲取一些有用的信息,而你不需要打開手機 app。

你可以通過兩種方式強化你的 app 界面,而提供用戶實效性、高價值的信息:

1. 預覽界面直接給了你全屏的有用的信息。就像他字面意思一樣,你可以無須交互的直接預覽信息。事實上,你點一下它,就會直接打開 iwatch 上的 app。

2. 在用戶同意通知後,你可以自定義通知的界面。你還可以使用自定義的 action ,在用戶自願操作時,觸發對應的動作。

當然 Xcode 和 iOS SDK 也同步升級了。

正如你所想象的 Watchkit app 的設計與 iOS app 有很大的不同。你需要好好看看 [Apple Watch Human Interface Guidelines](https://developer.apple.com/watchos/human-interface-guidelines/overview/ "Apple Watch Human Interface Guidelines")。

#WatchKit Framework

WatchKit.framework 是一個全新的軟件包,用來支持 Apple Watch app 的開發。使用它你可以創作、配置和操作 WatchKit app、Glance 以及自定義通知界面。

1. 界面控制器讓你可以時間層狀或書頁狀的導航。

2. 界面對象如:文本框、圖片、按鈕和列表可以提供展示和交互。

####iOS 8.3

#Apple Pay

增加了一個新的類 PKPaymentButton,這個可以用來初始化 Apple Pay。這些 buttons 會帶有 Apple Pay 的 logo。

Apple Pay支持了很多新的方式如:“shipping,” “delivery,” “pickup from store,” and “pickup from customer.”你還可以在獲取別人地址的情況下,獲得別人的名字。

Apple Pay 請看 [Apple Pay Programming Guide](https://developer.apple.com/library/content/ApplePay_Guide/index.html#//apple_ref/doc/uid/TP40014764 "Apple Pay Programming Guide");PKPaymentButton 相關的請看[PassKit Framework Reference](https://developer.apple.com/documentation/passkit "PassKit Framework Reference")

#Metal

使用 Metal 的 app 可以有更多的方式操作緩沖區以及內省頂點屬性類型:

1. MTLComputeCommandEncoder 和 MTLRenderCommandEncoder 對象包含了新的方法,用來直接copy值給著色器緩沖表以及改變初始化偏移來使用已經綁定的緩沖區。使用這些屬性去獲取很小的一次性的數據緩沖區或者重新配置可獲得的緩沖區,而不需要再創建一個 MTLBuffer 實例。

2. MTLVertexAttribute 對象新增了 attributeType 屬性,可以內省 Metal 源碼中生命的著色器的屬性類型。

####iOS 8.4

Nothing.

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved