xcode 11新建項目的處理

1.使用scenedelegate(iOS 13以下黑屏)

xcode更新到11後,新建工程裏面多了好多東西,除了原有的AppDelegate外,又新加了一個SceneDelegate,看了一下官方文檔,說是iPadOS用來做多窗口支持的,這時候如果你還像之前的一樣,在APPdelegate裏寫self.window的方法的話,運行程序,直接崩潰了,因爲新版本的xcode的APPdelegate.h裏面已經沒有了window這個屬性,如下圖所示:


 

iOS13之前,Appdelegate會處理App生命週期和UI生命週期,但iOS 13之後,Appdelegate不在處理UI生命週期了,只負責處理 App 生命週期和新的 Scene Session 生命週期。而UI的生命週期就由Scene Delegate處理了。所以我們寫self.window時就要放到scenedelegate裏。如下:

 

這樣就可以使用scenedelegate了。但使用了scenedelegate後,在iOS 13以下的手機運行會黑屏。如果你的程序只在iOS 13手機上運行,不適配iOS 13以下的設備,那麼就到這裏結束了。

 

2.如果要適配iOS 13以下的設備,需要把相關的scenedelegate都刪掉才行。操作步驟如下:

1.刪除info文件裏關於scenedelegate裏的配置信息:刪除Application Scene Manifest,圖中紅色部分。

 

2.在APPdelegate.h文件增加window屬性,

 

然後在APPdelegate.m裏刪除新加的scene方法。

 

添加之前的APPdelegate生命週期的方法,如進入前臺後臺等等,這些方法在xcode11以下的版本里有,你可以從以前的項目複製過來。

 

3.最後刪除scenedelegate的2個文件

 

至此,運行的項目就可以在iOS 13以下的設備運行了。同樣iOS 13的設備也可以用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章