iPhont X适配

iphontX若不设置启动图片相当于iPhone8的放大模式(375667) ,若设置了启动图片才是他的实际像素,实际像素点:
5.8英寸屏(1125
2436)
7681024
矢量图的图片倍率 iphontX3倍图
iphone4,iphone5无放大模式。iphone6,7,8的放大模式屏幕像素是:(320
568)。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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值