iphone X系列设配屏幕适配
2019独角兽企业重金招聘Python工程师标准>>>
截止目前,苹果所有刘海系列的设备屏幕数据如下:
- iPhone X 、iPhone XS: 5.8英寸, 375pt * 812pt(@3x),启动图1125px * 2436px
- iPhone XR: 6.1英寸, 414pt * 896pt(@2x),启动图828px * 1792px
- iPhone XS Max: 6.5英寸, 414pt * 896pt(@3x),启动图1242px * 2688px
该系列设备导航栏高度88(64), 状态栏高度44(20), tabbar高度83(49), 其中括号中的为非刘海系列的高度。
对于未进行新设备屏幕尺寸适配的工程,在新设备iPhone XS Max和iPhone XR上运行, 它们是以放大模式自动适配的(以iPhone X为基准等比例放大),此时在代码中获取的屏幕高度都是375pt * 812pt。
针对这种情况,需要配置Assets.xcassets
里的 LaunchImage
,新增两种828px * 1792px
、1242px * 2688px
启动图即可。
对于比较新的以LaunchScreen.stroyboard
为启动页的,据说是直接重新编译工程即可。
最后,对于刘海屏幕的判断,项目中使用了两种方式:
根据屏幕宽高进行判断:
这是RN中用来判断的代码,使用
nativeBounds
是由于它是一个跟屏幕朝向无关的数据,值恒等于屏幕portrait-up
方向时的宽高。static BOOL RCTIsIPhoneX() {static BOOL isIPhoneX = NO;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{CGSize screenSize = [UIScreen mainScreen].nativeBounds.size;CGSize iPhoneXScreenSize = CGSizeMake(1125, 2436);CGSize iPhoneXMaxScreenSize = CGSizeMake(1242, 2688);CGSize iPhoneXRScreenSize = CGSizeMake(828, 1792);isIPhoneX =CGSizeEqualToSize(screenSize, iPhoneXScreenSize) ||CGSizeEqualToSize(screenSize, iPhoneXMaxScreenSize) ||CGSizeEqualToSize(screenSize, iPhoneXRScreenSize);});return isIPhoneX; }
通过获取设备的device model来判断:
每一台iOS设备都有对应的硬件编码/标识符,称为
device model
或者叫machine name
,代码如下+ (NSString *)getMachine {//方法一: // static const char MachineName[] = "hw.machine"; // NSString* result = nil; // size_t size = 0; // if (sysctlbyname(MachineName, NULL, &size, NULL, 0) || size == 0) // return nil; // char *machine = new char[size]; // if (sysctlbyname(MachineName, machine, &size, NULL, 0) == 0) // result = [NSString stringWithUTF8String:machine]; // delete[] machine; // return result;方法二:添加了对于模拟器的支持static NSString *model;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{#if TARGET_IPHONE_SIMULATOR #ifdef DEBUG// 获取模拟器所对应的 device modelmodel = NSProcessInfo.processInfo.environment[@"SIMULATOR_MODEL_IDENTIFIER"]; #endif #else// 获取真机设备的 device modelstruct utsname systemInfo;uname(&systemInfo);model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; #endif});return model; }
到此我们就可以根据device model来判断是否是iPhone X了:
+ (bool) isIphoneX {NSString* model = [self getMachine];BOOL isiPhoneX = [model isEqualToString:@"iPhone10,3"] || [model isEqualToString:@"iPhone10,6"] || [model hasPrefix:@"iPhone11,"];return isiPhoneX; }
去年发布的第一代 iPhone X 对应的 device mode 为 iPhone10,3
和 iPhone10,6
,而今年最新发布 iPhone XS 对应 iPhone11,2
,iPhone XS Max 对应 iPhone11,4
和 iPhone11,6
,iPhone XR 对应 iPhone11,8
,完整的 device mode 数据参考这里:https://www.theiphonewiki.com/wiki/Models
另外对于各个屏幕的分辨率,可以参考这张图:
参考链接:
https://kangzubin.com/iphone-resolutions/
https://github.com/facebook/react-native/blob/master/React/Modules/RCTDeviceInfo.m
转载于:https://my.oschina.net/u/1473377/blog/2239955
iphone X系列设配屏幕适配相关推荐
- 苹果手机尺寸详细表及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax、iPhone 11、iPhone 11 Pro、iPhone 11 Pro Max、屏幕适配
iPhone设备 物理分辨率是硬件所支持,逻辑分辨率是软件可以达到的.
- 苹果系统引导修复工具_苹果客服渠道回应 iPhone 12 系列屏幕 “发绿”情况:将在新系统中修复...
新闻转自IT之家 远洋 IT之家 11 月 17 日消息IT之家昨天曾报道,近日有用户反映 iPhone 12 出现屏幕发绿的问题,具体来说,iPhone 12 在深灰色状态下会出现屏幕周围泛绿的情况 ...
- 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
苹果新一代智能手机iPhone 11系列已经正式发售.近日,苹果中国正式公布了iPhone 11全系列的维修费用,整体来说用一个字形容的话,那就是贵! 从苹果官方公布的数据显示,最新发布的三款新机售后 ...
- 不再是顶配专属iPhone 13系列将全系标配LiDAR激光雷达
根据此前多方预测的消息,今年苹果将继续在9月推出全新的iPhone 13系列机型(也有消息称为iPhone 12s系列),按照往年惯例,今年的新iPhone的升级可能并不会太大,而最大的升级主要将集中 ...
- iPhone 12系列终于将配高刷屏:120Hz恐怕还得等两年
随着发布时间的日益临近,关于iPhone 12系列的爆料已经深入到每一个细节.近日有外媒带来了该机在屏幕刷新率上的更多细节. 去年开始,高刷新率屏幕越来越成为各大手机厂商追求的目标,到现在这一卖点已广 ...
- iphone X 屏幕适配
1.前言 就在今天(2017年09月13日 )凌晨,苹果发布了带刘海的 iPhone X,这个屏幕需要 iOS 开发者做新的适配,会后苹果发布了 iPhone X 的适配指南,我们将它翻译出来供大家参 ...
- 关于IOS的屏幕适配(iPhone)——资源适配
IOS的屏幕适配几乎不需要大量的代码操作,更多的时间我们只是动动鼠标选择一下就搞定.可以苹果在这方面做的还是比较人性的,解放了开发者. 首先来说说Iphone这几种屏(由于最近做的是iPhone AP ...
- cocos2d 屏幕適配_Cocos2d-x 3.1 一步步做屏幕适配
本文并不想讲关于屏幕适配的概念或者大道理,如果还不了解cocos2d-x屏幕适配的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/ ...
- iPhone 12系列详细屏幕参数前瞻:首批只有三星、LG屏幕 均为OLED面板
6月已过去了大半,距离苹果全新的iPhone 12系列年度旗舰的秋季发布会又近了一步.综合当前比较可靠的消息,今年秋季苹果的年度旗舰iPhone 12系列将依旧提供iPhone 12.iPhone 1 ...
最新文章
- AI 不可以作为专利认证发明人,“因为它不是人”
- 钱海丰:农药污染下的土壤微生态响应与风险预测​(今晚7点半)
- 【转载】自然语言推理介绍
- 十分钟用Windows服务器简单搭建DHCP中继代理!!
- KeyMob移动广告聚合平台给予开发者服务!
- JAVA知识总结目录
- redis重启命令_这可能是你见过最全面的Redis主从复制原理
- 缓存系列之一:buffer、cache与浏览器缓存
- React开发(269):事件的绑定-addEventListener
- 程序员面试金典 - 面试题 08.10. 颜色填充(BFS/DFS)
- PhoneGap学习笔记(一) 框架搭建
- 阿诺德图像加密c语言,基于Arnold变换的数字图像加密算法
- 做好产品经理,需要具备哪些技能?
- delphi 获取当前路径
- 基于脉振高频电压信号注入法的PMSM无位置传感器控制原理和仿真
- 用VS新建多层架构时引用第三方dll 时清理解决方案时,放bin文件夹下的bll被清空问题
- 怎么更改苹果账户名称_是妥协吗?苹果iCloud终于支持安卓/iOS浏览器了
- 前端iPhone刘海屏适配
- fullscan mysql_[InnoDB系列] -- 实测ibbackup vs mysqldump
- 计算机游戏快速退出的快捷键,电脑玩游戏怎么快速切回桌面