本文涵蓋 iOS 9 現有架構的其他、次要變更或增強功能。
除了 iOS 的重大變更之外,Apple 還對 iOS 9 中的數個現有架構進行了修改和改進。
AVFoundation Framework 新增專案
在AVFoundation架構中 ,AVSpeechSynthesisVoice 類別現在除了語言之外,還可讓您依標識子指定語音。
例如,下列程式代碼會取得所有可用語音的清單:
var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();
然後,您可以將它設定為 Voice AVSpeachUtterance類別實例的屬性,以使用清單中的其中一個語音。
AVQueuePlayer 類別現在支援佇列中因特網串流和檔案型媒體的混合。 舊版只能將相同類型的媒體排入佇列。
如需詳細資訊,請參閱 Apple 的 AVSpeechSynthesisVoice 參考。
AVKit 架構新增專案
若要使用新的 Picture-in-Picture (PIP) 功能,AVKit 架構包含新的 AVPictureInPictureController 和 AVPlayerViewController 類別:
- AVPictureInPictureController - 這個類別可讓 iOS 9 應用程式回應使用者在 iPad 上浮動、可重設大小的 PIP 視窗中啟動視訊播放。
- AVPlayerViewController - 管理
AVPlayer控制器,用來在 iPad 上的浮動、可重設大小的 PIP 視窗中呈現影片。
如需詳細資訊,請參閱 iPad 檔的 Multitasking 和 Apple 的 AVPictureInPictureController 參考和 AVPlayerViewController 參考。
CloudKit Web 服務簡介
CloudKit 架構可簡化存取 iCloud 的應用程式開發。 這包括擷取應用程式數據和資產許可權,以及能夠安全地儲存應用程式資訊。 此套件可讓使用者使用其 iCloud 識別符存取應用程式,而不需共用個人資訊,來為使用者提供一層匿名性。
新的 CloudKit Web Services 架構提供 JavaScript 連結庫 (CloudKit JS),可併入您的網站,以提供與 Xamarin.iOS 應用程式相同的 CloudKit 型數據和內容的存取權。
重要
您必須先定義該資料庫的架構,才能使用 CloudKit JS 從 CloudKit 資料庫存取、呈現或更新內容。
如需詳細資訊,請參閱下列檔:
- CloudKit 簡介 - 我們在 Xamarin.iOS 應用程式中使用 CloudKit 的簡介。
- CloudKit 快速入門 - Apple CloudKit 簡介。
- CloudKit JS 參考 - Apple 的 CloudKit JS 檔。
- CloudKit 目錄:CloudKit 簡介 (Cocoa 和 JavaScript) - Apple 使用 CloudKit 和 CloudKit JS 的範例應用程式。
重要
Apple 提供工具協助開發人員適當地處理歐盟一般資料保護規定 (GDPR)。
Foundation Framework 新增專案
Apple 包含下列 iOS 9 中 Foundation 架構的變更:
NSBundle 的變更
已對 iOS 9 的 NSBundle 類別進行下列變更:
GetPreservationPriorityForTag (NSString tag)- 取得具有指定標籤之資源的目前保留優先順序。 有效值位於的範圍0.01.0中,系統會先清除優先順序最低的資源。SetPreservationPriorityForTag (double priority, NSSet tags)- 為具有指定標籤的資源設定目前的保留優先順序。 有效值位於的範圍0.01.0中,系統會先清除優先順序最低的資源。
如需詳細資訊,請參閱Apple的 NSBundle 參考。
NSProcessInfo 的變更
在 iOS 裝置上執行的每個進程都有單 一進程資訊代理程式 (PIA)。 使用 NSProcessInfo 類別,提供指定進程的目前 PIA 和控制電源和熱管理的相關信息。
例如,若要控制進程的自動終止,您可以使用下列程式代碼:
// Disable automatic termination
var activity = NSProcessInfo.ProcessInfo.BeginActivity(NSActivityOptions.AutomaticTerminationDisabled, "Define reason for change here...");
// Perform the required task
...
// Return to normal operation
NSProcessInfo.ProcessInfo.EndActivity(activity);
如需詳細資訊,請參閱Apple的 NSProcessInfo參考。
回應低功率模式
LowPowerModeEnabled使用 NSProcessInfo 類別的 屬性,判斷應用程式正在執行的 iOS 裝置上是否已啟用低功率模式。 例如:
// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
// Reduce activity to conserve energy...
} else {
// Return to normal activity...
}
HealthKit 架構變更
Apple 包含下列 iOS 9 中 HealthKit 架構的變更:
- 支援在 HealthKit 資料庫中大量刪除和刪除專案。 如需詳細資訊,請參閱 Apple 的 HKDeletedObject、HKAnchoredObjectQuery 和 HKHealthStore 類別參考。
- 新的追蹤類別和特性已新增至
HKQuantityTypeIdentifier類別 (例如UVExposure) 和HKCategoryTypeIdentifier類別中(例如 )。OvulationTestResult
如需在 Xamarin.iOS 中使用 HealthKit 的詳細資訊,請參閱 HealthKit 簡介檔。
本機驗證架構變更
Apple 在 iOS 9 包含下列本機驗證架構的變更:
EvaluateAccessControl使用 LAContext 類別的 和EvaluatePolicy方法,您現在可以重複使用先前成功解除鎖定嘗試的觸控標識符相符專案。- 取得目前已註冊手指清單的能力。
- 支援在新增或移除手指從驗證中移除時進行追蹤。
- 能夠在 Keychain 呼叫中使用 驗證內容 ,以及評估 Keychain 訪問控制清單的支援。
- 從程式代碼取消使用者提示的功能。
如需詳細資訊,請參閱 使用 Xamarin.iOS 的觸控標識碼和臉部標識碼。
LAContext 變更
iOS 9 的 LAContext 類別已進行下列變更:
- TouchIdAuthenticationMaximumAllowableReuseDuration - 傳回可重複使用觸控標識符驗證的最大時間量。
- EvaluatedPolicyDomainState - 取得或設定評估的原則狀態。
- MaxBiometryFailures - 已在 iOS 9 中過時。
- TouchIdAuthenticationAllowableReuseDuration 取得或設定可重複使用觸控標識符驗證的時間量。
- EvaluateAccessControl - 以異步方式評估驗證原則。
- Invalidate - 使指定的觸控標識碼驗證失效。
- IsCredentialSet - 如果目前已設定認證,則傳
true回 。 - SetCredentialType 設定指定的認證類型。
如需詳細資訊,請參閱Apple的 LAContext參考 。
MapKit 架構變更
Apple 在 iOS 9 中包含下列 MapKit 架構的變更:
- MapKit 現在支援使用 MKLaunchOptions 和 MKDirections 類別,直接啟動地圖應用程式到傳輸方向,以及查詢傳輸估計抵達時間(ETA)。
- MapKit 和 CLGeocoder 類別所傳回的搜尋結果也可以提供結果的時區。
- 您現在可以使用
DetailCalloutAccessoryViewMKAnnotationView 類別的 屬性,完全自定義 iOS 應用程式呈現的地圖註釋。
如需詳細資訊,請參閱我們的 iOS 地圖 和逐步解說 - 探索 MapKit 檔中的批注和重疊,以取得在 Xamarin.iOS 和 Apple 的 CLGeocoder 參考中使用 地圖 和批注的詳細資訊。
PassKit Framework 新增專案
Apple 在 iOS 9 包含下列 PassKit 架構的變更:
- Apple Pay 現在支援商店轉帳和信用卡以及探索卡。 如需詳細資訊,請參閱Apple PKPaymentRequest 類別參考的付款網路一節。
- 您現在可以直接從 Xamarin.iOS 應用程式內將付款網路和卡片簽發者新增至 Apple Pay。 如需詳細資訊,請參閱Apple的 PKAddPaymentPassViewController 類別參考 。
如需在 Xamarin.iOS 中使用 PassKit 的詳細資訊,請參閱 PassKit 簡介檔。
Safari 服務架構新增專案
Apple 在 iOS 9 中包含下列 Safari Services 架構的變更:
- 您現在可以使用新的 SFSafariViewController 類別,在 Xamarin.iOS 應用程式中顯示 Web 內容。 它可讓您與 Safari 應用程式共享網站數據和 Cookie,並包含數個 Safari 的功能(例如讀者和自動填入)。 SFSafariViewController 具有 [完成] 按鈕,會在使用者完成檢視 Web 內容時將用戶傳回您的應用程式。
由於 SFSafariViewController 類別是針對顯示單一網頁內容的量身打造,因此您應該考慮使用它來取代現有 Xamarin.iOS 應用程式中的任何 WKWebKit 或 UIWebView 控件。
顯示網站
下列程式代碼是從另一個 檢視控制器內呼叫 SFSafariViewController 的範例:
// Create an instance of the Safari Services View Controller
var controller = new SFSafariViewController(new NSUrl("http://www.xamarin.com"));
// Display website
PresentViewController(controller, true, null);
UIKit 架構變更
Apple 包含許多 iOS 9 UIKit 架構元素的增強功能。 下列各節將詳細說明這些變更。
3D 觸控事件
iOS 9 和 i 電話 6s 和 i 電話 6s Plus 的新功能,3D Touch 會將壓力敏感手勢新增至 iOS 應用程式。 因此,如果您的應用程式在iOS 9上執行(或更新版本),且iOS裝置能夠支援3D Touch,壓力的變更會導致 TouchesMoved 引發事件。
由於這種行為變更,您的 iOS 應用程式應該準備好 TouchesMoved 讓事件更頻繁地叫用,即使 X/Y 座標尚未變更也一樣。
如需詳細資訊,請參閱我們的 3D 觸控 簡介指南。
檔就地開啟功能
藉由使用 FinishedLaunching (application, launchOptions) UIApplicationDelegate 類別的 或 WillFinishLaunching (Application, launchOptions) 方法,您現在可以開啟檔並就地修改檔(而不是使用複本)。
若要支援新的就地開啟功能,請將金鑰新增 LSSupportsOpeningDocumentsInPlace 至 Xamarin.iOS 應用程式的 Info.plist 檔案,其值為 YES。
如需詳細資訊, 請參閱Apple的UIApplicationDelegate參考 。
增強式觸控事件
Apple 為 iOS 9 中的觸控事件提供了數個增強功能。 其中包括能夠使用觸控預測,以及存取顯示器重新整理之間的中繼觸控。
如需詳細資訊, 請參閱Apple的iOS 事件處理指南。
擷取量身打造的內容
新的 NSDataAsset 類別可讓 Xamarin.iOS 應用程式擷取針對目前執行中之 iOS 裝置記憶體和圖形功能量身打造的內容。
新增版面配置錨點
新的NSLayoutAnchor和NSLayoutDimension版面配置錨點類別會使用 UIView 類別的新錨點屬性(例如 LeadingAnchor 和 WidthAnchor),讓 iOS 9 中的版面配置更容易。
如需詳細資訊,請參閱整合分鏡腳本簡介檔,以取得在 Xamarin.iOS 應用程式中使用 AutoLayout 和 Size 類別的詳細資訊,以及 Apple 的 NSLayoutAnchor 參考、NSLayoutDimension 參考和 UIView 參考。
新的可讀取內容邊界
新的 UILayoutGuide 類別可用來提供可讀取的內容邊界,並定義檢視內內容的繪製區域。 如需詳細資訊,請參閱Apple的 UILayoutGuide參考 。
通知修改中的文字輸入
UIUserNotificationAction 類別有新的Behavior屬性,可用來支援來自通知的文字輸入。
UIApplicationDelegate 變更
雖然 Apple 並未正式取代,但建議使用 或 WillFinishLaunching (UIApplication application, NSDictionary launchOptions) 方法取代 UIApplicationDelegate 類別FinishedLaunching (UIApplication application, NSDictionary launchOptions)方法的所有呼叫FinishedLaunching (UIApplication application)。
如需詳細資訊, 請參閱Apple的UIApplicationDelegate參考 。
UIKit Dynamics 變更
Apple 包含下列 iOS 9 中 UIKit Dynamics 的變更:
- Dynamics 現在支援非矩形碰撞界限。
- 新的可
UIFieldBehavior自定義類別可用來支援各種欄位類型。 - 已將其他附件類型新增至 類別
UIAttachmentBehavior。
如需詳細資訊, 請參閱Apple的UI附加參考 。
UIPickerView 和 UIDatePicker 變更
在 iOS 9 之前, UIPickerView 和 UIDatePicker 控件不可重設大小,而且會自動重設大小以填滿其容器的寬度(通常是應用程式執行所在 iOS 裝置的寬度)。
在 iOS 9 中,此自動重設大小不會再發生,而且不論螢幕大小和方向為何,所有 iOS 裝置上的控件都會以 320 點寬度轉譯。
若要更正這種情況,請使用自動版面配置和大小類別,將控件的寬度釘選到父容器邊緣(檢視),並指定所需的高度。 如需在 Xamarin.iOS 應用程式中使用自動版面配置和大小類別的詳細資訊,請參閱整合 分鏡腳本 簡介檔。
新的UITextInputAssistantItem類別
使用新UITextInputAssistantItem類別來配置快捷鍵列中的列按鈕群組。 快捷鍵列是一個新的區域,可在軟式鍵盤中提供輸入快捷方式。
