IOS15最标准的纯代码搭建项目
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最标准的纯代码搭建项目相关推荐
- 搭建App主流框架_纯代码搭建(OC)
转载自:http://my.oschina.net/hejunbinlan/blog/529778?fromerr=EmSuX7PR 搭建主流框架界面 源码地址在文章末尾 达成效果 效果图 注:本文部 ...
- Xcode7 创建纯代码的项目
xcode新建的项目是基于故事版的,但大家开发ios程序时,使用的最多的UI绘制方式依然是基于代码的.他们之间的优缺点在这里就不在赘述了.下面就说一下,怎么在xcode7中新建一个纯代码的项目. 1. ...
- swift纯代码UITabBarController的使用
最近在OC的基础上开始学习swift,以下是swift纯代码搭建项目架构效果图 创建一个项目 选择swift语言 将项目中的main.storyboard ,ViewController ,Launc ...
- [纯代码] Swift+UIKit · 搭建第一个iOS APP项目
本文目录 前言 创建一个纯代码编辑的Swift + UIKit项目 创建一个Swift + UIKit项目 让它变成纯代码编辑的 让你的APP打开指定的ViewController 创建一个窗口 编辑 ...
- 支付宝支付 第三集:搭建项目及测试(含代码)
支付宝支付 第三集:搭建项目及测试(含代码) 一.资源 在搭建项目的时候,涉及到了SpringBoot的配置文件properties与yml文件,由于之前的项目使用的全部是properties类型,这 ...
- ios15使用纯代码计算cell的高度
ios15使用纯代码计算cell的高度 #import "MTableViewController.h" #import "MTableViewCell.h" ...
- 记录一下曾经写过的P2P金融项目-理财端(PC端)纯代码(续-服务消费者工程)
pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...
- storyboard搭建项目_简单谈谈ios程序界面实现的三种方式(代码创建,xib和storyboard)...
一丶前言 实现ios界面总的来说,有三种方式,传统的是纯代码创建与xib创建,近年来,苹果官网一直推荐用storyboard管理项目界面,最新的xcode 创建的project也是默认为storybo ...
- Xcode11 新建纯代码项目以及运行模拟器黑屏解决
xcode11 新建纯代码项目,现选择"创建一个新的Xcode 项目". 选择创建单个APP 填写项目名称Product Name,选择您的团队Team,填写组织名称Organiz ...
最新文章
- 拥抱高效、拥抱 Bugtags 之来自用户的声音(三)
- C/C++版数据结构之链表三
- android xutils3.0获取服务器图片,Android端使用xUtils3.0实现文件上传
- 【学习/研发】嵌入式Linux/Android开发有它就够了——迅为4412开发板
- P4197-Peaks【Kruskal重构树,主席树】
- 更快更强,来试试 Mybatis 的增强版——EasyMybatis
- 编写一个脚本判断某个用户是否处在活动模式_大数据技术之Spark内核解析(二)Spark 部署模式...
- 用segnet训练我自己的数据,实验笔记1——改变图片大小
- 证明背包问题是NP-complete
- python实现强化学习
- 我的创作纪念日——文章汇总
- java764位_jdk7 64位下载
- 谷歌colab“几键”运行图像超分辨率模型-ESRGAN,操作详解
- 有哪些营销书籍值得推荐?市场营销人员必读书单
- 346雷达有多少tr组件_TR组件是什么?
- python写入pdf文件_Python用于NLP :处理文本和PDF文件
- 实例分割研究综述总结
- Ubuntu 开机画面
- 金融科技如何改变一家百年老银行?
- 地基基础行业发展概况及细分市场、主要壁垒构成
热门文章
- linux var目录满了,Linux入门教程:/var/spool/clientmqueue 占满根目录
- 我的世界java版tis,我的世界1.7.10~1.8.8 9tis-3d回到汇编的时代mod
- xilinx fpga 开发工具vivado 软件的安装,使用详细教程
- php中nodethirtythree,node常用模块 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...
- python不简单_不简单的python- 01基础
- 华为笔记本搭载鸿蒙系统,华为MatePad Pro2入网!预装鸿蒙系统 搭载麒麟9000
- java 输出ssl握手信息_使用Java的SSL握手错误
- rabbitnq 源码安装_linux下源码安装rabbitMq
- 流量回放开源代码Java_流量回放框架 jvm-sandbox-repeater 的实践
- freemarker面试_面试请不要再问我Spring ,阿里架构师吐血整理,这是对“Spring家族”最完美的诠释...