IOS15最标准的纯代码搭建项目

环境

xCode 13
ios 15


如今手机产品更新日新月异。ios既要适配iPhone12,13这样的刘海机型,还要适配iphone8-5s这样的老机型。如何使用纯代码创建一套两者都适用的。
今天不提StoryBoard,StoryBoard试过,没有问题。
首先创建一个项目,把Main有关的全部删掉,例如 Main.storyboard, info.plist里面的Main,选中项目,下面的Main。ViewController.h和.m文件。
来到 SceneDelegate.m文件。

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {UIWindowScene *windowScene = (UIWindowScene *)scene;self.window = [[UIWindow alloc] initWithWindowScene:windowScene];self.window.rootViewController = [[LJMainTabBarController alloc]init];[self.window makeKeyAndVisible];
}

2. 新建一个 LJMainTabBarController 继承UITabBarController

在viewDidLoad里面调用如下

- (void)addVCs {NSArray* navNameArray = @[@"LJNewsViewController",@"LJReaderViewController",@"LJMediaViewController",@"LJFoundViewController",@"LJMeViewController"];NSMutableArray* navArray = [[NSMutableArray alloc] init];NSArray* titleArray = @[@"新闻",@"阅读",@"视听",@"发现",@"我"];NSArray* imageArray = @[@"news",@"reader",@"media",@"found",@"me"];for ( int i = 0; i < 5; i++) {//添加视图控制器UIViewController* vc = [[NSClassFromString(navNameArray[i]) alloc] init];LJNavigationController* nav = [[LJNavigationController alloc] initWithRootViewController:vc];[navArray addObject:nav];//设置tabbarItemNSString* imgNormalName = [NSString stringWithFormat:@"tabbar_icon_%@_normal",imageArray[i]];NSString* imgHighlightName = [NSString stringWithFormat:@"tabbar_icon_%@_highlight",imageArray[i]];UITabBarItem* tabBarItem = [[UITabBarItem alloc] initWithTitle:titleArray[i] image:[UIImage imageNamed:imgNormalName] tag:i+100];tabBarItem.selectedImage = [UIImage imageNamed:imgHighlightName];nav.tabBarItem = tabBarItem;}self.viewControllers = navArray;self.tabBar.tintColor = kNetEaseRedColor;
}

当然也需要一个LJNavigationController 来包装每一个控制器。
继承于 基类 UINavigationController
在里面重写方法:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{if(self.childViewControllers.count>0){viewController.hidesBottomBarWhenPushed = YES;}[super pushViewController:viewController animated:animated];
}

测试在iphone13和ipod 均可正常显示。于StoryBoard创建出来的并无区别。

IOS15最标准的纯代码搭建项目相关推荐

  1. 搭建App主流框架_纯代码搭建(OC)

    转载自:http://my.oschina.net/hejunbinlan/blog/529778?fromerr=EmSuX7PR 搭建主流框架界面 源码地址在文章末尾 达成效果 效果图 注:本文部 ...

  2. Xcode7  创建纯代码的项目

    xcode新建的项目是基于故事版的,但大家开发ios程序时,使用的最多的UI绘制方式依然是基于代码的.他们之间的优缺点在这里就不在赘述了.下面就说一下,怎么在xcode7中新建一个纯代码的项目. 1. ...

  3. swift纯代码UITabBarController的使用

    最近在OC的基础上开始学习swift,以下是swift纯代码搭建项目架构效果图 创建一个项目 选择swift语言 将项目中的main.storyboard ,ViewController ,Launc ...

  4. [纯代码] Swift+UIKit · 搭建第一个iOS APP项目

    本文目录 前言 创建一个纯代码编辑的Swift + UIKit项目 创建一个Swift + UIKit项目 让它变成纯代码编辑的 让你的APP打开指定的ViewController 创建一个窗口 编辑 ...

  5. 支付宝支付 第三集:搭建项目及测试(含代码)

    支付宝支付 第三集:搭建项目及测试(含代码) 一.资源 在搭建项目的时候,涉及到了SpringBoot的配置文件properties与yml文件,由于之前的项目使用的全部是properties类型,这 ...

  6. ios15使用纯代码计算cell的高度

    ios15使用纯代码计算cell的高度 #import "MTableViewController.h" #import "MTableViewCell.h" ...

  7. 记录一下曾经写过的P2P金融项目-理财端(PC端)纯代码(续-服务消费者工程)

    pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...

  8. storyboard搭建项目_简单谈谈ios程序界面实现的三种方式(代码创建,xib和storyboard)...

    一丶前言 实现ios界面总的来说,有三种方式,传统的是纯代码创建与xib创建,近年来,苹果官网一直推荐用storyboard管理项目界面,最新的xcode 创建的project也是默认为storybo ...

  9. Xcode11 新建纯代码项目以及运行模拟器黑屏解决

    xcode11 新建纯代码项目,现选择"创建一个新的Xcode 项目". 选择创建单个APP 填写项目名称Product Name,选择您的团队Team,填写组织名称Organiz ...

最新文章

  1. 拥抱高效、拥抱 Bugtags 之来自用户的声音(三)
  2. C/C++版数据结构之链表三
  3. android xutils3.0获取服务器图片,Android端使用xUtils3.0实现文件上传
  4. 【学习/研发】嵌入式Linux/Android开发有它就够了——迅为4412开发板
  5. P4197-Peaks【Kruskal重构树,主席树】
  6. 更快更强,来试试 Mybatis 的增强版——EasyMybatis
  7. 编写一个脚本判断某个用户是否处在活动模式_大数据技术之Spark内核解析(二)Spark 部署模式...
  8. 用segnet训练我自己的数据,实验笔记1——改变图片大小
  9. 证明背包问题是NP-complete
  10. python实现强化学习
  11. 我的创作纪念日——文章汇总
  12. java764位_jdk7 64位下载
  13. 谷歌colab“几键”运行图像超分辨率模型-ESRGAN,操作详解
  14. 有哪些营销书籍值得推荐?市场营销人员必读书单
  15. 346雷达有多少tr组件_TR组件是什么?
  16. python写入pdf文件_Python用于NLP :处理文本和PDF文件
  17. 实例分割研究综述总结
  18. Ubuntu 开机画面
  19. 金融科技如何改变一家百年老银行?
  20. 地基基础行业发展概况及细分市场、主要壁垒构成

热门文章

  1. linux var目录满了,Linux入门教程:/var/spool/clientmqueue 占满根目录
  2. 我的世界java版tis,我的世界1.7.10~1.8.8 9tis-3d回到汇编的时代mod
  3. xilinx fpga 开发工具vivado 软件的安装,使用详细教程
  4. php中nodethirtythree,node常用模块 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. python不简单_不简单的python- 01基础
  6. 华为笔记本搭载鸿蒙系统,华为MatePad Pro2入网!预装鸿蒙系统 搭载麒麟9000
  7. java 输出ssl握手信息_使用Java的SSL握手错误
  8. rabbitnq 源码安装_linux下源码安装rabbitMq
  9. 流量回放开源代码Java_流量回放框架 jvm-sandbox-repeater 的实践
  10. freemarker面试_面试请不要再问我Spring ,阿里架构师吐血整理,这是对“Spring家族”最完美的诠释...