Xcode11 新建項(xiàng)目的問題

當(dāng)我們更新了xcode到11的版本的時(shí)候,我們?cè)傩陆?xiàng)目就會(huì)發(fā)現(xiàn),出現(xiàn)的文件與之前的不同,會(huì)多出兩個(gè)文件SceneDelegate.h和SceneDelegate.m.

SceneDelegate 是ipados用來做多窗口支持的? 這時(shí)候如果你還像之前的一樣,在appdelegate里寫self.window的方法的話,運(yùn)行程序,直接崩潰了,因?yàn)樾掳姹镜膞code的appdelegate里面已經(jīng)沒有了window這個(gè)屬性

?在iOS13之前,appdelegate會(huì)處理app生命周期和UI生命周期,但是iOS13之后,appdelegate就不再處理UI生命周期了,只負(fù)責(zé)處理生命周期和新的scene? session生命周期,而UI 的生命周期就有scene delegate處理了,所以我們寫的self.window時(shí)就要放到scenedelegate里

?適配iOS13包含和以上的設(shè)備要在sceneDelegate內(nèi)寫:

?UIWindowScene * windowScene = (UIWindowScene *)scene;

?self.window = [[UIWindow alloc]initWithWindowScene:windowScene];

?self.window.frame = windowScene.coordinateSpace.bounds;

?ViewController * control = [[ViewController alloc]init];

?self.window.rootViewController = control;

?[self.window makeKeyAndVisible];

?同時(shí)適配iOS13以下設(shè)備以及iOS13以上的設(shè)備,需要把相關(guān)的sceneDelegate都刪掉:

1.刪除info文件里關(guān)于scenedelegate的配置信息:刪除Application Scene Manifest

?2.appdelegate.h文件增加window屬性

?3.在APPdelegate.m里刪除新加的scene方法 UISceneSession lifecycle 內(nèi)面的方法

?4.刪除scenedelegate的2個(gè)文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容