iPhont X适配

iphontX若不设置启动图片相当于iPhone8的放大模式(375*667) ,若设置了启动图片才是他的实际像素,实际像素点:
5.8英寸屏(1125*2436)
768*1024
矢量图的图片倍率 iphontX3倍图
iphone4,iphone5,iphoneX无放大模式。iphone6,7,8的放大模式屏幕像素是:(320*568)。iphone6 plus,7 plus,8 plus的放大模式屏幕像素是:(375*667)。

在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/

猜你喜欢

转载自blog.csdn.net/jia12216/article/details/78681291