美文网首页iOS备忘录iOS、Swift、React NativeiOS Development
Xcode9.2 + iOS8.1环境下,本地图标显示异常(错乱

Xcode9.2 + iOS8.1环境下,本地图标显示异常(错乱

作者: 博行天下 | 来源:发表于2017-12-29 13:41 被阅读1835次

    前言

    前两天升级Xcode到9.2,编写并自测程序一段时间没有发现什么异常问题,就在前两天用了我的小苹果IPhone 5 系统版本iOS8.1.1的自测了一边我的程序,让我大吃一惊项目中本地图片显示异常,被拉伸扭曲,相比很多开发者也会遇到这样的事情,在这里分享一下解决方法。

    一、图片加载异常展示
    页面上面的图片,加载出来的都是网络图片链接,没有加载出来的是都是本地图标,这是一个很奇怪的现象。项目中放置本地图标的地方有两处:一个是放bundle里面,另一个就是放在assets里面,下面两张截图显示的是我把本地图标放在assets里面出现的现象。


    页面1.jpeg
    页面2.jpeg

    二、图片异常处理
    异常图片解决有两种方法:
    ① 所有本地使用到的图标放置在bundle里
    ② 不适用新的版本Xcode9.2,返回到Xcode9.1
    想使用其他方法来解决图片异常的情况,最终以失败告终,目前上面的两种方法是最好的解决方式。

    注意:如果项目更新版本迫在眉睫,建议使用Xcode9.1发布项目版本,Xcode9.2出现图片异常这种情况,是Xcode版本bug问题。

    三、回顾升级Xcode8图片崩溃处理
    升级Xcode8的时候,在iOS9.3以下,由于 iOS - Xcode8的(图片格式)assets图标格式问题导致崩溃,找了好久才发现是图片的引起的。
    1、分析一下崩溃原因:在Xcode8中,如果你的图片资源文件里有图片显示模式为P3或16位图,并且在Xcode的Deployment Target是iOS9.3以下的就会出现这个问题,如果你的App需要支持wide color functionality,那你就必须设置Deployment Target为iOS9.3以上,如果你的APP不需要支持wide color functionality并且你希望兼容iOS老版本,那么你需要将所有16-bit or P3 assets的图片转换为8-bit sRGB assets
    2、定位到问题图片:
    ① 使用Xcode打一个ipa包并解压应用的ipa包,右击进入到你应用的Playload文件夹
    ② 使用find命令定位到Assets.car文件
    find . -name 'Assets.car'
    ③ 使用assetutil命令导出图片的信息存储到Assets.json文件中
    sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
    ④ 打开刚才生成的Assets.json文件,查找含有”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″的内容。这个对应的Name就是出现问题的图片了

    { 
    "SizeClass Vertical" : "universal",
     "Graphics" : "GLES2,0", "Name" : "ianisme.com", 
    "Scale" : 2, "Idiom" : "universal", 
    "Memory" : "512MB", 
    "LayoutDirection" : "0 - Horizontal", 
    "DisplayGamut" : "P3",
     "Encoding" : "ARGB-16",
     "SizeClass Horizontal" : "universal",
     "Image Type" : "kCoreThemeOnePartScale", 
    "AssetType" : "Image", 
    "Subtype" : 0, 
    "EdgeInsets" : "top:0 left:0 bottom:0 right:0"
     }
    

    3、解决方法:和 UI 设计沟通重新设计一个符合要求的图片,这是目前最快的解决方法

    案例:除自己开发的App出现问题之外,哈罗单车App在苹果5 iOS8.1 系统下也出现这样的问题了


    WechatIMG65.jpeg

    相关文章

      网友评论

      • 玉思盈蝶:吓屎我了,上周刚更新的9.2,还没发现这问题
        博行天下:@玉思盈蝶 iOS8.1 我这里出现这问题了:flushed:

      本文标题:Xcode9.2 + iOS8.1环境下,本地图标显示异常(错乱

      本文链接:https://www.haomeiwen.com/subject/uopmgxtx.html