|
前置说明:【Xcode 12.1,使用Swift或者OC创建工程】
目标:删除Main storyboard,并解决启动黑屏问题
1,删除Main storyboard文件;
2,项目配置里General-->Main Interface 置空;
3,工程里包含了SceneDelegate文件,AppDelegate文件中的window属性放到了SceneDelegate中,交给SceneDelegate来管理window。SceneDelegate文件是为了实现iPadOS支持多窗口的结果,目前iPhone暂不支持多窗口,故先删除此文件。
4,在info.plist文件中删除Application scene mainfest;
5,在AppDelegate文件中删除与UISceneSession相关的两个方法;
6,在AppDelegate文件中增加window属性。
7,代码如下:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.backgroundColor = .white
window?.rootViewController = HRootViewController()
window?.makeKeyAndVisible()
return true
}
}
8,HRootViewController就是自定义的VC,可以从此VC展开你的项目代码编写。
9,以上为swift里的处理方式,对于OC同样适用,只是代码部分需要将window属性添加在AppDelegate文件的.h文件下。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
HRootViewController *rootVC = [[HRootViewController alloc] init];
CGRect rcScreen = [[UIScreen mainScreen] bounds];
self.window = [[UIWindow alloc] initWithFrame:rcScreen];
self.window.rootViewController = rootVC;
[self.window makeKeyAndVisible];
return YES;
}
10,AppDelegate里的生命周期方法也可以在需要时增加回来。
#pragma mark - 生命周期
- (void)applicationWillEnterForeground:(UIApplication *)application{
NSLog(@"状态** 将要进入前台");
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
NSLog(@"状态** 已经活跃");
}
- (void)applicationWillResignActive:(UIApplication *)application{
NSLog(@"状态** 将要进入后台");
}
- (void)applicationDidEnterBackground:(UIApplication *)application{
NSLog(@"状态** 已经进入后台");
}
- (void)applicationWillTerminate:(UIApplication *)application{
NSLog(@"状态** 将要退出程序”);
}
|