使用LaunchScreen.storyboard后,运行时显示老的图片

1.问题描述

1.1.运行环境

Xcode版本:7.3.1
Simulator版本:8.4 & 9.3

1.2.背景

做一个项目APP时需要修改启动页,而老版本的启动页是通过launchImage在asset catalog中设置不同尺寸的启动图片。但产品化只提供了一套图片,所以改成了通过launchScreen.storyboard添加UIImageView加载图片,然后适配不同的屏幕。

1.3.问题

修改完毕之后,惊喜地发现6p,6sp上运行是对的。

在6p模拟器上的效果

但是在6s,6及以下的窄屏模拟器上有问题,显示在launchScreen上,似乎在新的界面上多了一份asset catalog中设置的老图片。

在6s模拟器上的效果

因为怀疑是工程中的老文件有冲突,所以就把asset catalog清空,但也没有效果。

2.解决方法

2.1.思路

后来尝试在launchScreen.storyboard中加载其他图片,6s中不会显示老的启动图。
尝试将启动页资源图片的名字由launchImage@2x.png launchImage@3x.png 改为 launchImage1.1@2x.png launchImage@3x.png 之后,6s模拟器上也不再显示老的启动图。

因此怀疑是工程中存在名为launchImage@2x.png 的图片,但是仔细查找后没有发现。

最后怀疑是在Xcode的缓存数据derivedData中存在老的图片,于是将Xcode中的derivedData清空,重新运行,效果正常。

2.2.结果

清空Xcode的缓存derivedData数据,重新运行即可。

3.原因

该工程的上个版本中在asset catalog中设置了5s的启动图,但未设置6p对应的启动图。

而在本次修改时,Xcode打包时因为某种原因未能用launchImage@2x.png 同步替换缓存中旧的同名文件,只新增了launchImage@3x.png 文件到缓存中。

所以在打包时就将旧的launchImage@2x.png 和 launchImage@3x.png 文件打包进了APP中,所以导致在6s / 6p中运行时,分别显示了不同的图片。

4.其他

推荐一个用来清理Xcode中derivedData的插件:
https://github.com/kattrali/deriveddata-exterminator

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值