iPhont X适配

简介: iPhont X适配

iphontX若不设置启动图片相当于iPhone8的放大模式(375667) ,若设置了启动图片才是他的实际像素,实际像素点:

5.8英寸屏(11252436)

7681024

矢量图的图片倍率 iphontX3倍图

iphone4,iphone5无放大模式。iphone6,7,8的放大模式屏幕像素是:(320568)。iphone6 plus,7 plus,8 plus的放大模式屏幕像素是:(375667)。iphone XR的放大模式屏幕像素是:(375812),标准模式是:(414*896)。好像iphoneX刚出来时的操作系统没有放大模式,现在应该有放大模式。其它的它后面的手机应该也有放大模式,没有实际统计过。


在LaunchImage文件中增加iPhontX启动图片,增加方式:点击右侧属性工具栏,勾选iOS 8.0 and Later的iPhone的Portrait,就出来一个图片框了你把1125*2436启动图片拖进去,再调试模拟器或真机就可以看到iPhont X的实际也面了。

你可以UITabBarController页面系统已经给你适配了底部了。其它页面都出现顶部耳朵后面也算你的页面区了,若有控件就被耳朵挡住,下面的部分是弧面的角,若按钮再最底部,纳闷按钮的角就被截掉了,底部有一部分有一部分保留区,点击是无效了。

通过识别屏幕高度([[UIScreen mainScreen] bounds].size.height)为2436像素来确定他是你的最爱,由于他没有放大模式,所以不用考虑他会变屏幕高度的问题。

既然找到了识别iPhont X方法,可以通过判断出他是iPhont X来特殊处理。

顶部留空44像素,正好从耳朵下边沿14像素处开始布局。注意:为何是44像素,是因为它的顶部弧边角下沿正好距离顶部44像素,也就是圆角半径是44像素。底部留空白44像素来空出感应区。注意:为何是44像素,是因为它的底部弧边角上边沿正好距离底部44像素,也就是圆角半径是44像素。简单吧?不像别的文章瞎逼逼的,适配iPhont X多魔鬼。只是对所有的也看都要处理一遍也确实够X的。真对得起他的名字iPhont X。

iPhone X的状态栏视图数组结构变化,读取网络状态栏的网络状态时崩溃。找不到foregroundView这个子视图。

这段代码崩溃:

  UIApplication *app = [UIApplication sharedApplication];
    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

崩溃信息:

#0 Thread
NSUnknownKeyException
[<UIStatusBar_Modern 0x15f906160> valueForUndefinedKey:]: this class is not key value coding-compliant for the key foregroundView.

这是项目中使用状态栏中图标判断当前网络的具体状态,而 iPhone X手机状态栏和其他版本手机存在差异,状态栏是多嵌套了一层,所以在读取时候需要注意。

修改后的代码如下:

    UIApplication *app = [UIApplication sharedApplication];
//    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
    NSArray *children;
    // 不能用 [[self deviceVersion] isEqualToString:@"iPhone X"] 来判断,因为模拟器不会返回 iPhone X
    if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
        children = [[[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    }
    else
    {
        children = [[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    }

咱们请求的json日志如何看到中文呢?使用这个这个网址,粘贴地址翻译一下就好了。

https://www.bejson.com/convert/unicode_chinese/


目录
相关文章
|
20天前
|
消息中间件 编解码 开发者
深入解析 Flutter兼容鸿蒙next全体生态的横竖屏适配与多屏协作兼容架构
本文深入探讨了 Flutter 在屏幕适配、横竖屏切换及多屏协作方面的兼容架构。介绍了 Flutter 的响应式布局、逻辑像素、方向感知、LayoutBuilder 等工具,以及如何通过 StreamBuilder 和 Provider 实现多屏数据同步。结合实际应用场景,如移动办公和教育应用,展示了 Flutter 的强大功能和灵活性。
88 6
|
2月前
|
编解码 前端开发 JavaScript
前端移动端适配方案
【9月更文挑战第8天】前端移动端适配方案
96 0
|
3月前
|
前端开发
移动端适配问题
【8月更文挑战第6天】
53 4
|
3月前
|
前端开发 JavaScript
移动端适配
【8月更文挑战第4天】
41 4
|
3月前
|
Web App开发 前端开发
什么是移动端适配
【8月更文挑战第2天】
|
3月前
|
前端开发 小程序
移动端适配方案
【8月更文挑战第1天】
|
6月前
|
编解码 前端开发
什么是适配?
什么是适配?
|
6月前
|
iOS开发
iPad适配
iPad适配
71 0
|
JavaScript
深入了解移动端适配的方案
深入了解移动端适配的方案
251 0
|
编解码 前端开发 JavaScript
前端移动端优化和适配
前端移动端优化和适配
204 0