iOS11 iPhoneX适配指南

2023-10-28 21:48
文章标签 指南 ios11 适配 iphonex

本文主要是介绍iOS11 iPhoneX适配指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考资料:
App界面适配iOS11(包括iPhoneX的奇葩尺寸)
有关iOS11和iPhoneX的适配问题
适配iOS11&iPhoneX的一些坑


判断iPhoneX

swift 判断iPhoneX

extension UIDevice {//是否iPhoneXpublic class func isIphoneX() -> Bool {if UIScreen.main.bounds.height == 812 {return true}return false}
}

OC 判断iPhoneX


@interface UIDevice(extension)+ (BOOL)isiphoneX;@end@implementation UIDevice(extension)+ (BOOL)isiphoneX{if([UIScreen mainScreen].bounds.size.height == 812){return YES;}else{return NO;}
}@end

iOS 11 禁止tableView自动偏移(整体上移或下移)
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;if (@available(iOS 11.0, *)){[self.tableView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}

解决iPhoneX Push过程中TabBar位置上移方法

封装一个基类UINavigationController,这里名字设置为:MyNavigationController。在MyNavigationController中覆盖父类方法。

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{//适配iPhone X Push过程中TabBar位置上移if (self.viewControllers.count > 0) {viewController.hidesBottomBarWhenPushed = YES;}[super pushViewController:viewController animated:animated];// 修改tabBar的frameCGRect frame = self.tabBarController.tabBar.frame;frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;self.tabBarController.tabBar.frame = frame;}

调整iPhoneX tabbar图标位置

这里引用ESTabbar的关键代码,其实是修改UITabbar的itemPositioning属性。

    public var itemCustomPositioning: ESTabBarItemPositioning? {didSet {if let itemCustomPositioning = itemCustomPositioning {switch itemCustomPositioning {case .fill:itemPositioning = .fillcase .automatic:itemPositioning = .automaticcase .centered:itemPositioning = .centereddefault:break}}self.reload()}}

这篇关于iOS11 iPhoneX适配指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296160

相关文章

打造坚固的SSH防护网:端口敲门入门指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 打造坚固的SSH防护网:端口敲门入门指南 前言什么是端口敲门端口敲门的优点1. 增强安全性2. 动态防火墙规则3. 隐匿服务4. 改善日志管理5. 灵活性和兼容性6. 低资源消耗7. 防御暴力破解和扫描8. 便于合法用户访问9. 适用于不同类型的服务 端口敲

iOS 7适配上存在的各种问题

谈谈项目中遇到的各种iOS7适配问题 由于我的项目要适配到iOS7.1, 而现在已经是9时代了,在实际工作中我也是遇到了各种奇葩的坑,所以我想尽快把遇到的iOS7适配问题和解决方案分享出来,以后这些东西可能就用处不大了。   1.字体问题 iOS7中的字体适配恐怕是最麻烦的坑了,原因是iOS7以上的许多字体在7都是不存在的,甚至包括一些system-字体。比如system-

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发(上)》中,我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后,接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 调试是开发过程中至关重要的一环,特别是对于像Chromium这样复杂的大型项目。远程调试不仅可以充分利用远程服务器的强大计算资源,还能确保开发环境的一致

在Qt5中创建、读取和写入JSON文件的完整指南

Qt5 提供了一个非常方便的JSON解析器,使得在C++中处理JSON数据变得非常简单。本文将详细介绍如何在Qt5中创建、读取和写入JSON文件。 读取JSON文件的示例 假设我们有一个名为test.json的JSON文件,内容如下: {"appDesc": {"description": "SomeDescription","message": "SomeMessage"},"appNam

写给Android开发的Binder指南

为什么选用binder? Linux 已经提供了管道、消息队列、共享内存和 Socket 等 IPC 机制。那为什么 Android 还要提供 Binder 来实现 IPC 呢?主要是基于性能、稳定性和安全性几方面的原因。 性能 Socket 作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信。 消息队列和管道采用存储-转发方式,即数据先从发送方缓存区拷

C++初学者指南第一步---14.函数调用机制

C++初学者指南第一步—14.函数调用机制 文章目录 C++初学者指南第一步---14.函数调用机制1.记住:内存的结构2.函数调用是如何工作的3. 不要引用局部变量4. 常见编译器优化5. Inlining内联 1.记住:内存的结构 堆(自由存储) 用于动态存储期对象,例如 std::vector 的内容。空间大,可以用于大容量存储(大多数用于主内存)。可以根据需要分配

如何高效地为pip换源:详细操作指南

在Python开发中,pip是我们不可或缺的包管理工具。然而,默认的官方源下载速度较慢,尤其是在国内使用时可能会遇到网络问题。为了提高下载速度,我们可以通过更换国内的镜像源来解决这一问题。本文将详细介绍如何高效地为pip换源,让你的Python开发体验更加畅快。 一、什么是pip换源? pip默认使用的是Python官方的包管理仓库,即https://pypi.org/simple。由于网络等

Linux下手动查杀木马与Rootkit的实战指南

模拟木马程序的自动运行 黑客可以通过多种方式让木马程序自动运行,包括: 计划任务 (crontab):通过设置定时任务来周期性地执行木马脚本。开机启动:在系统的启动脚本中添加木马程序,确保系统启动时木马也随之运行。替换系统命令:通过替换系统常用的命令,如pwd,来触发木马的执行。 权限维持脚本编写 攻击者可能会编写权限维持脚本,这些脚本通过父进程检测子进程的存在,如果子进程被删除,父进程将

【协议-指南】

协议-指南 ■ CAN-通讯协议 ■ CAN-通讯协议 添加链接描述

本地离线模型搭建指南-LLaMA-Factory训练框架及工具

搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭建指南将按照以下四个部分展开 中文大语言模型底座选择依据本地运行显卡选择RAG架构实现LLaMA-Factory训练框架及工具 4 训练架构及工具 4.1 为什么要使用LLaMA-Factor