iOS 9 分屏多工(2):Slide Over & Split View快速入門

發表於2015-07-17

該文件包含:
第一部分:iOS 9 分屏多工–入門
第二部分:iOS 9 分屏多工–Slide Over & Split View快速入門
第三部分:iOS 9 分屏多工–畫中畫(PiP)快速入門


按照本章中的指導,在支援的iPad裝置上讓你的App執行iOS 9多工。
當你新建一個Xcode 7模板工程時,是預設支援Slide Over和Split View。如果你從老的工程升級到iOS 9,通過以下的步驟設定你的Xcode工程配置,從而讓App支援Slide Over和Split View:

注意:如果你一定不支援Slide Over和Split View,在你的Xcode 專案的Info.plist檔案中顯式地加入UIRequiresFullScreen關鍵字併為其Boolean值賦上YES。你可以在屬性列表編輯器,或在目標編輯器的General>Deployment Info區域設定。

提示:通過設定Settings > General > Multitasking,使用者可禁用Slide Over和Split View 。如果你已經把一切都設定正確後,但仍無法使用這些特性,你可以檢查這項設定。

對於如何使用Slide Over和Split View,可以下載Lister (for watchOS, iOS, and OS X)示例程式碼工程。

在 Slide Over and Split View中,主要和次要App都同時執行在前臺,大多數情況下它們都是平等的。但只有主要App可以:

  • 擁有自己的狀態列;
  • 有資格使用第二物理螢幕工作;
  • 可使用畫中畫自動呼叫;
  • 可以佔用橫屏下的2/3螢幕面積,並且在分屏檢視中,水平方向上是regular Size Class(橫屏Split View中,次要應用最多佔用二分之一的螢幕,並且在水平方向上是compact Size Class)。

在Split View中,使用者控制你的應用程式視窗的大小。使用者通過旋轉裝置(如在iOS的早期版本),或者水平滑動分割主要應用和次級應用程式的垂直分隔線來此操作。當兩種型別的變化發生時,系統以同樣的方式通知你的應用程式:視窗範圍界限的改變會伴隨改變根檢視控制器的Size Classes。(使用者移動分屏控制元件也會顯示App狀態過渡,在本節後面介紹。)

此前,iPad的水平和垂直Size Classes總是“regular”。隨著Slide Over 和 Split View出現,這些都已經有很大的改變。下圖顯示了你的App會遇到使用者操作iPad螢幕後不同的Size Classes。

為了App的內容正確顯示,你的App必須是自適應的。你的App設定應當:

這要求App中的LaunchScreen.storyboard檔案必須支援Auto Layout。使用Xcode 7中的App模板建立的新工程會自動生成LaunchScreen.storyboard檔案。學習如何新增這個檔案到你的工程中,請參閱 App Distribution Guide 中的Creating a Launch Screen File 內容。

正確地處理你的App的狀態轉換在iOS9中尤為重要。在Split View上下文中,每當使用者移動Split View分割器時,螢幕上的兩個應用程式都將移動到螢幕之外。甚至是當使用者改變主意並將分割器返回起點時,這種情況也會發生。

當使用者移動分割控制元件時,系統會使用 ApplicationWillResignActive: 協議方法呼叫App委託物件。

系統會重新調整你的App(螢幕外)以捕捉到一個或多個快照,確保當使用者最終釋放分隔控制元件時能提供流暢的使用者體驗。這是因為在使用者最終釋放分隔控制元件時無法預測應用的視窗最終邊界。更復雜的場景是裝置的旋轉和移動分隔器同時進行。

保證你的App在大小改變、快照獲取處理中不丟失資料狀態或導航狀態。這就是當一個使用者改變App大小–移動分隔器並將其移動到初始位置最後釋放這個分隔器,這一系列的情況下,使用者期望App的狀態,導航位置(包括檢視、選擇、滾動位置以及其他等)能與使用者最初觸控分隔器時一樣。充分使用 ApplicationWillResignActive: 呼叫儲存使用者的狀態。詳情請閱讀 App Programming Guide for iOS 中 What to Do When Your App Is Interrupted Temporarily 一節。

如果使用者移動分隔控制元件直到螢幕邊界讓你的App消失,那系統會呼叫 ApplicationDidEnterBackground: 協議方法。

有關優雅其處理App狀態過渡的引導,請閱讀 App Programming Guide for iOS 中 Strategies for Handling App State Transitions 一節。

關於快照的處理資訊,請閱讀 Prepare for the App Snapshot ,並參考 UIView Class Reference 中的 Capturing a View Snapshot 相關內容。

相關文章