2014-10-10 66 views
10

假設我想要設計一個主細節應用程序,通用應用程序的Xcode6主細部項目模板包含UISplitViewController,splitViewController是iOS8中的新功能。我也想支持iOS7的應用程序。同時支持iOS8和iOS7的設計應用程序

一般

  1. 什麼是設計使用Xcode6 故事板同時支持iOS8上和iOS7一個通用的應用程序的最佳方式?
  2. 爲不同的OS版本使用單獨的故事板會更好嗎?
  3. 我們應該遵循哪些最佳做法來使應用程序與兩個操作系統兼容?
+0

偉大的問題! – Arjuna 2014-10-10 08:26:17

+0

[This thread](http:// stackoverflow。com/questions/24172860/how-can-xcode-6-adaptive-uis-back-back-compatible-with-ios-7-and-ios-6)討論了支持統一故事板的ios 7。雖然它不是特定於主細節的應用程序,但我認爲通過一些調整你可以使它工作。 – tbraginets 2014-10-22 21:36:51

回答

4

創建此類應用程序的「最佳方式」很可能取決於您的應用程序需要做什麼。根據所需的特殊行爲,某些方法會比其他方法更好。

但是,在Xcode 6中使用一個通用故事板是絕對有可能的,該故事板使用Size Classes,並且仍然使用UISplitViewController以iPhone 7和iPhone 7爲目標。我已經成功地完成了這一點。它確實需要很多工作才能確保它在iOS 7和8上正常工作並保持一致。在執行各種新的自適應遊戲時,您必須小心謹慎,因爲這是iOS 7和8之間的巨大差異。例如,檢測你什麼時候有popover需要爲這兩個不同的操作系統做一些工作,處理unwind segues需要一些特殊的處理等,這將需要很多測試。專門測試iPhone 6 Plus的時間 - 在橫向上,它將顯示屏幕上的主屏幕和詳細信息,但您可以控制它。

通過經驗去後,我會而實行單一的故事板而不是兩個故事板,一個爲每個操作系統,絕對遠離每個操作系統創建一個分鏡走,然後爲每個設備類型。

想要了解如何檢測API可用性,您需要閱讀SDK Compatibility Guide。如果您實現了iOS 7中不存在的API,則該應用程序將崩潰,因此只有在該應用程序運行的操作系統存在此功能時才需要運行該代碼。例如,您可能想要使用新的UIBlurEffect API,但iOS 7中不存在。瞭解棄用意味着什麼,並且瞭解iOS 8中發生了哪些變化將極大地有所幫助。例如,旋轉API不贊成使用Size Class特徵集合,但這些API在iOS 7上不可用,因此您需要繼續使用棄用的旋轉API。

還檢查了一些WWDC videos從今年。他們有幾個視頻,討論新的適應性賽段和通用故事板。請注意,這些故事板是向後兼容iOS 7的,但有些尺寸類別在iOS 7上不可用。請參閱this question以及我提供的答案以獲取更多信息。前幾年的WWDC視頻也討論瞭如何支持多種操作系統,逐步增強等。

當然,當你有問題/問題堆棧溢出是一個很好的資源。我在過去幾個月發佈的很多問題都與這個問題有關,如何修改UISplitViewController行爲,獲得對兩種操作系統的支持,使用單個故事板和新的自適應遊戲等。您可能希望閱讀通過這些來了解在開發應用程序時可能遇到的問題。

相關問題