iOS刘海机型UI适配(X、Xs、Xs Max、Xr)

news/2024/12/22 21:33:11/

分辨率

iPhoneX 的分辨率:2436 x 1125px,812 x 375pt

iPhoneXs 的分辨率: 2436 x 1125px,pt: 812 x 375pt

iPhoneXs Max 的分辨率:2688 x 1242px,pt: 896 x 414pt

iPhoneXr 的分辨率:1792 x 828px,pt: 896 x 414pt

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
//判断是否是ipad
#define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
//判断iPhone4系列
#define kiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone5系列
#define kiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone6系列
#define kiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iphone6+系列
#define kiPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneX
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)// 判断是否是刘海机型
#define IS_IPHONE_X_S_Max_R (IS_IPHONE_X || IS_IPHONE_Xs || IS_IPHONE_Xs_Max || IS_IPHONE_Xr)

NavigationBar 和 TabBar 的判断

1
2
3
4
//刘海机型
#define StatusBar_Height (IS_IPHONE_X_S_Max_R ? 44.0 : 20.0)
#define NavBar_Height (IS_IPHONE_X_S_Max_R ? 88.0 : 64.0)
#define TabBar_Height (IS_IPHONE_X_S_Max_R ? 83.0 : 49.0)

其实刘海屏的主要影响是屏幕顶部多出来的一块刘海,所以其实可以获取状态栏的高度,来确定导航栏需要增加的高度或者是位置(这个就要看具体的业务需求了),不过这个有一点问题就是如果状态栏被隐藏的话,高度就会为 0,如果在状态栏隐藏状态下判断,拿到的高度显然是不符合期望值的,不过这个情况也是比较少见的情况,如果注意页面之间的代码逻辑的话,是可以避免的。

1
[UIApplication sharedApplication].statusBarFrame.size.height

http://www.ppmy.cn/news/494220.html

相关文章

iOS 适配iPhone XR/iPhone XS Max

快速适配先说结论,找设计师要2张启动图: iPhone XR:828px x 1792pxiPhone XS Max: 1242px x 2688px 代码中使用了屏幕size判断是否是iPhone X的需要修改,请翻到最后。 LaunchImage中只有iPhone X/iPhone XS XCode GM Bug&…

iphone xr xs_等等,是iPhone“ XS”还是iPhone“ Xs”?

iphone xr xs Apple just announced a trio of new phones with pretty silly names. On top of being kind of…not good names, they’re also confusing to type: is it iPhone XS or Xs? Xr or XR? So how do you actually capitalize these confusing names? We decide…

windows编译运行es源码1

一. 基础搭载环境 win10 jdk 11 \ jdk8 idea 2022 gradle 8.1.1 【建议4.5.1以上】 elasticsearch 7.8.0 源码及安装包 二. 安装gradle 1. 官网下载链接:https://gradle.org/releases/ 2. 解压设置环境变量 (1) GRADLE_HOME 环境变量指向你的 Gradle…

VUE 2X 数据代理 ④

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs数据代理 什么是数据代理❓ 代理底层~ D e f i n e P r o p e r y DefinePropery DefinePropery V u e Vue Vue数据代理原理理解总结 文章有误…

系统磁盘从MBR格式转换成GPT格式来升级win11

之前的《用移动硬盘当系统盘,即插即用》中说到,需要把磁盘格式转化为MBR格式才能执行下去。问题是,win10升级win11要求启动方式为UEFI的话,磁盘格式不能为MBR。其实不升级也不影响啥,但是就是想好看点。所以花了点时间…

Java-API简析_java.lang.CharSequence接口(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131318474 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

升级鸿蒙壁纸还在吗,升级鸿蒙,通知栏米味,桌面果味

昨儿手机收到了系统的更新提示,和一批内测和新老朋友唠唠系统,我们来看一下新的系统,旧的华为EMIUI系统有什么差别? 看到更新日志的时候,很多人都对 【 万物互联之旅 】这个字产生期待值,鸿蒙未面市前&…

鸿蒙车载智慧屏评测,华为鸿蒙系统初体验,华为智慧屏评测,功能超乎想象

除了AI健身能够体现人机互动的智慧外,华为智慧屏V65开启儿童模式也一样很有特色,除了设置观看时长、开启护眼模式、精选儿童内容外,摄像头也会全程监控家里小孩的坐姿,看电视的距离等对应弹出提醒或者暂停播放,不管你们…