前言

我们知道,利用 storyboard 开发 UI 界面有着众多好处,最显著的就是简单直观,有着极高的开发效率。

但是,storyboard 也存在着不少不可忽视的缺点:

  • 不适合多人协作开发,合并代码产生冲突不容易解决;
  • storyboard 量多了之后,开发过程中 Xcode 内加载速度慢;
  • 在复杂页面中,产生控件约束冲突不容易定位问题等。

根据以上优劣考虑,我决定采用纯代码的方式进行 UI 界面的开发。我需要删除新建项目中的 storyboard 文件,以著此文记录。

操作步骤

在删除 storyboard 之前,我已经进行了 SceneDelegate 的删除操作,以便完成 iOS 13 以下设备的适配。有相同需求的可以看:Xcode 11 新建项目适配 iOS 13 以下设备

1、清空项目配置中 “Main Interface” 的内容。

2、删除项目中 Main.storyboard 文件,因为本项目的加载界面也比较简单,所以保留 LaunchScreen.storyboard 作为 App 启动界面。

3、 在 AppDelegate.m 文件的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中添加以下代码:

// 初始化 self.window
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
// 这个 ViewController 是新建的时候自带的,需要导入一下头文件
ViewController *vc = [[ViewController alloc] init];
// 设置根控制器并可视
[self.window setRootViewController:vc];
[self.window makeKeyAndVisible];

4、(补充)如果没有删除 SceneDelegate 的话,步骤 3 作废,改用本步骤。在 SceneDelegate.m 文件的 - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions 的方法中新增下面代码。

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {// 初始化 self.windowUIWindowScene *windowScene = (UIWindowScene *)scene;self.window = [[UIWindow alloc] initWithWindowScene:windowScene];self.window.frame = windowScene.coordinateSpace.bounds;self.window.backgroundColor = [UIColor whiteColor];// 这个 ViewController 是新建的时候自带的,需要导入一下头文件ViewController *vc = [[ViewController alloc] init];[self.window setRootViewController:vc];[self.window makeKeyAndVisible];
}

5、(吐血补充)如果没有删除 SceneDelegate 的话,步骤 1 中的清除操作是不完整的,还需要删除 Application Scene Manifest 底下藏着的 Main!

操作完成,App 在模拟器上运行良好:


至此本文已完,别忘了留下你的三连哦~

Xcode 新项目删除 storyboard 文件相关推荐

  1. xcode11新项目删除main.storyboard 两种方法

    方法一 心急的童鞋按照老操作完成后再按照如下操作即可 /**弃用storboard1.info.plist去除<key>UIApplicationSceneManifest</key ...

  2. [Unity]项目工程文件太大删除Library文件夹会怎么样

    项目工程文件大小太大,怎么减少项目工程文件的大小. 删除与文件夹Assets同级的Library文件夹(动辄几十个G,上百G大小),同时减少文件夹Assets的资源文件. 例如音频,图片等等.删除这些 ...

  3. 【Java 新建项目】使用程序对新项目的各个实体 创建Dao、DaoImpl、Service、ServiceImpl层的文件...

    优化之后的步骤: 1.第一步 生成各层文件夹,并且创建GenericDao.java等基础dao[基础dao中涉及到的包名等自行更改] 2.第二步 生成各个实体对应的Dao等层文件 首先给出基本Dao ...

  4. 新项目新工作空间新仓库新setting文件

    maven项目涉及到仓库,本地jar包存放在本地仓库中,新项目新工作空间新仓库新setting文件,可以避免很多问题,不同项目工程的版本可能不一样,所涉及的jar包版本可能也不一样,不分开会有一些冲突 ...

  5. 【转载】.btc勒索病毒删除+还原文件(Dharma家族新成员)

    新变种中检测到Dharma勒索病毒,这次将.btc文件扩展名附加到由其加密的文件中.勒索病毒类似于Dharma的其他变体,旨在利用多种加密模式的组合,以便使受害者计算机上的文件不再能够打开并显示如下: ...

  6. idea启动项目 报错类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。

    D:\SOFT\智慧用电\electric-biz\trunk\src\main\java\org\springblade\common\utils\QRCodeGenerator.java:11:3 ...

  7. 删除windows文件夹是提示找不到该项目 该项目不在C:\中。请确认该项目的位置,然后重试。...

    建一个文本文档,在其中输入以下内容(包括一些汉字,到goto :start为止):REM QBFC Project Options BeginREM HasVersionInfo: YesREM Co ...

  8. SpringBoot项目启动报错[类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。]

    Web server failed to start. Port 80 was already in use. Web server failed to start. Port 80 was alre ...

  9. 消除Xcode iOS项目的警告

    消除Xcode iOS项目的警告 作者  犯傻小二  关注 2016.03.10 15:22*  字数 8287  阅读 3839 评论 0 喜欢 7 如果你有强迫症,看到项目中那么多警告肯定特别心烦 ...

最新文章

  1. tensorflow---alexnet training (tflearn)
  2. vs2017运行yolov4_windows10+vs2017+opencv3.4.1配置YOLOV4
  3. 【Android 逆向】Android 系统文件分析 ( 外部存储设备文件 | sbin 命令程序目录 | dev 字符设备目录 )
  4. 求圆面积的python代码_《求》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  5. 你的导师是哪种类型?
  6. 【Linux查看tomcat版本】
  7. Glib2: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)问题(六)
  8. 2022-02-09大数据学习日志——Hadoop离线阶段——Hive窗口函数、性能调优
  9. 基于javaweb+JSP+Servlet火车票网上订票系统(前台、后台)
  10. 从单机到分布式数据库存储系统的演进
  11. 单片机c语言实验交通信号灯,单片机设计交通信号灯实验报告.docx
  12. [JZOJ3339]【NOI2013模拟】wyl8899和法法塔的游戏
  13. java publisher_Publisher/Subscriber(发布/订阅者)消息模式开发流程
  14. 基于FME的地形图图面压盖检查工具的设计与制作
  15. mysql正则匹配大写字母_正则表达式,大写字母,怎么匹配?
  16. 说一个头疼的问题:后端瞎返回数据导致APP崩溃,你会怎么办?
  17. 浅谈Spring定时任务
  18. 自定义带图标文字分割线通用布局,用于列表布局的设置、菜单页的item
  19. 按条件隐藏bootstrapTable某一列
  20. 王爽-汇编语言 万字学习总结

热门文章

  1. [crypto]-10-openssl版本介绍
  2. etcd - 一个分布式一致性键值存储系统
  3. 埃拉托斯特尼筛法(埃筛)
  4. 详解虚函数的实现过程之虚基类(4)
  5. 注入(一):APC注入
  6. C++编程风格(一)
  7. 1、数据库为什么需要备份?
  8. 5、修改视图(ALTER VIEW)
  9. P3385 【模板】负环
  10. cmd中的进度如何捕捉到输出内容_python 中日志异步发送到远程服务器