UIImageView在设备上启动屏幕上丢失的图像

我有一个支持iOS8和更高版本的应用程序,内置Xcode 7,我使用XIB作为启动屏幕(我没有启动图像)。 该视图包含具有应用程序版本的单个UILabel以及具有图像的2个UIImageViews,这些图像都存在于Images.xcassets中:徽标和飞溅图像。

当我启动应用程序时,UILabel和徽标图像显示正确,但如果我使用iOS9在iPad Air 2上运行应用程序,则飞溅图像不会显示。 我已经在Air和Mini上运行的iOS8以及适用于iPad 2,iPad Air和iPad Air 2的iOS9模拟器进行了testing,所有这些图像都正确显示。

我跑了一些基本的故障排除,看看能不能解决这个问题,但是我一直无法解决这个问题。我能看到的工作图像和失败图像之间的唯一区别是, 我将它添加到资产…

下面是我所知道的一个概要:

  • 飞溅图像的UIImageView位于正确的位置,大小正确。 我可以告诉这个,因为我把它的背景颜色设置为绿色来确保。 视图在那里,但图像不显示。 所以我假设这个观点不是怪罪。

  • 设置飞溅图像的UIImageView也使用徽标图像使徽标图像出现在视图的正确位置。 这也导致我认为这个观点不是怪罪。

  • 我在飞溅图像视图中使用的UIImage在应用程序中的其他位置使用,并在其他视图中显示正常(徽标图像也用于应用程序中的其他位置,显示正常)。 所以我假设图像是有效的,让它出现在其他视图中不是问题。

  • 我已经确认了logo和U盘中的文件的UIImage的设置是相同的。 它们设置为通用,任何宽度和高度,多个比例因子,默认呈现。 有一个区别 – 标志有1倍,2倍和3倍的比例,而飞溅图像只有1倍和2倍,但我也尝试使用UIImages只有1倍,1倍和2倍值在UIView和他们的工作(如果他们前一段时间添加到项目中)。

  • 将不同大小或格式的另一张图像(PNG和JPG)添加到我的xcassets中,并在UIImageView中使用UIImage显示飞溅图像也无法显示。

  • 将另一个UIImageView添加到XIB文件并为其分配一个已经在xcassets中的UIImage,该图像将出现在加载屏幕中。

  • 复制和重命名用于徽标的图像文件并将其添加到项目中,然后在飞溅视图中使用该UIImage也无法显示。

  • 我已经尝试清理项目,重新启动开发机器,并从Air 2删除应用程序,并重新安装,以防万一是一个问题。

最后三个步骤使我相信在项目文件的生命周期的某个点之后添加图像会有一些问题。 虽然我昨天更新到Xcode 7,但是最初在Xcode 6中添加了初始图像,但是在几个月之前添加了标识图像(也添加到了Xcode 6中)。

我已经查看了JSON文件的徽标图像和飞溅图像,他们似乎具有相同的格式。 我也通过pbxproj文件寻找差异,我看不到任何。

所以我想知道如果有人有任何想法,为什么启动屏幕可能不会显示这些新的图像,我特别添加在Air 2上? 我一直在阅读的其他问题,涉及到图像没有出现所有似乎都与启动图像或XIB文件中具有关联类的图像有关,这两者在这里都不相关。

如果closures然后再打开。

真的,重新启动设备 – 这就是为我修复的。

以下是不起作用的:

  • 清理DerivedData
  • 清理项目
  • 从设备上卸载应用程序
  • 重新启动Xcode
  • 重新启动计算机

较早的观察:

就像其他人一样:

  • 在模拟器中正常工作
  • 用于在设备上工作(iPhone 5S,iPad Air)
  • 没有代码更改(通过git reset –hard HEADvalidation),但停止工作。

我记得触发第一个停止工作的版本是在运行时拔掉iPhone的插头。 (不知道是否相关。)

然而,git重置没有解决它(与所有干净的步骤不工作结合)告诉我,这必须得到caching在其他地方。 很可能在一个.gitignored文件中? (我使用Xcode项目的Git忽略文件 )

一个解决方法适用于一个UIImageView(在UIView有三个),但不为其他人是把图像放入.xcassets文件。 恢复到普通的图像文件没有撤消修复。 (真的感觉像是一个caching错误。)

更新:看到顶部 – 重新启动设备是什么修复它。 我感觉到错误的位图数据被caching在设备本身上。

雷达: http : //openradar.appspot.com/23534818

“对于我来说,解决scheme只是简单地确保在故事板中的UIImageView的”清除graphics上下文“框不被选中,只是改变这个对我来说是固定的。 没有其他解决scheme为我工作。 从苹果开发者论坛得到它

在这里输入图像说明

我在iPhone 6上遇到了同样的问题。

非常奇怪的事实是,我能够使用另一个图像从我的images.xcassets具有相同的大小,压缩,色彩空间…

我无法find为什么它不起作用,但我find了一个解决scheme:只需将您的文件放在您的images.xcassets之外,并在Interface Builder中使用其全名(带扩展名)

在故事板样本中的splashScreen

希望这个帮助!

以下操作顺序解决了Xcode 7.3.1和iOS 9.3.4上的问题:

  1. 清理您的构build(⌘+⇧+ K)
  2. closuresXcode
  3. 硬重置iOS设备(电源+主屏幕button重启)
  4. 重新启动Xcode – 一旦准备就绪,让索引完成并在设备上构build。

许多其他答案build议重新启动设备和/或重build和/或重新安装是解决scheme。

虽然这些答案适用于我们中的一些人,但这些工作的原因是因为应用程序被迫“重新拍摄”或“重build”caching的快照。

caching的快照由应用程序用来在支持数据加载到内存之前呈现图像,包括包含故事板图像的资产目录。

这回答由@jaga提供的解决scheme,但不是原因,为什么UIImageViews在启动屏幕上的设备(但不是在模拟器)丢失。

背景

最近我尝试在“启动Screen.storyboard”文件中使用自定义字体。

我之所以不能在@TimCamber阅读这个答案之后变得清晰起来,这促使我做了一些更多的研究和testing。

自定义字体不包含在我的启动屏幕故事板文件中的原因是不包括资产目录中的图像…

该应用程序从启动屏幕故事板文件准备应用程序的启动屏幕的肖像和风景快照,并(当前)保存在您的应用程序包在这里:

  • /Library/Caches/Snapshots/<<app_bundle>>/
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/

在加载任何支持文件(包括任何自定义字体和资产目录)之前,此过程已完成。

正如上面提到的@ jaga的解决scheme,字面上所需要的是:

  1. (老学校)添加一个图像文件(.PNG)到你的应用程序的包(正如你可以从下面的屏幕截图中看到的我添加的图像文件在支持文件子目录下的一个图像子目录),和

Xcode中Project Navigator中相关目录的截图

  1. 在启动屏幕故事板文件的UIImageView对象中引用该图像…

Xcode中属性检查器下UIImageView的Image View部分截图

我看到了同样的问题。 重新启动设备(iPhone 6)并重build应用程序到设备是唯一固定它的东西。 我尝试了许多其他的提示和build议,但没有其他的工作。 只有重启+重build帮助。

我从TestFlight安装的应用程序也一样。 删除应用程序 – >然后重新启动iPhone – >然后重新安装应用程序为我工作。 只要重新安装应用程序或只是重新启动设备没有帮助。

我有同样的问题,但重新启动设备没有帮助。 我的工作是从我的启动故事板中删除UIImageView并添加一个新的。

将图像从Image.xcassets中移出并将其添加到项目中。 它为我工作。

我的工作是从模拟器菜单中select重置内容和设置…

重置内容和设置菜单

在iPad和iPhone设备上,我在Xcode 7中也遇到了这个问题。 尽pipe没有任何意义,但我大部分时间都可以通过设置不同的图像,而且在图像视图中将突出显示的图像设置为我的images.xcassets中的同一图像。

我使用iPhone 5s设备,也遇到了这个问题。

我解决它:

  • 删除驱动器数据

  • 清理项目

  • 重新启动Xcode

  • 从我的设备中删除项目

  • 重新启动5s。

我认为Xcode使用内存有些问题,系统可能会为Xcode分配一些内存原因Xcode绘制午餐映像失败(在我的电脑上,Xcode已经运行了几个星期而没有closures)

我认为启animation面只支持Assets.xcassets中的图像。

您是否尝试过closures设备? 这样做。

这似乎是一个iOS的错误。 像有时系统animation消失。

现在我刚刚重新启动iPhone,它是为我工作。

这太重要了,必须是空的

在这里输入图像说明

selectImageView,然后在属性检查器选项卡>图像视图>图像>图像名称中删除图像扩展名(.png或.jpg)。

在launchscreen.storyboard图像将不会出现,但它会在设备中。 这对我有效。

重新启动Xcode为我做了。

什么没有做到这一点:

  • 清理生成文件夹
  • 重新启动设备或模拟器(图像不可见)

我有同样的问题与imageView启动屏幕故事板。 我从项目中删除了图片的引用,我重命名了我的图片,并将其添加到项目。 所有的作品完美。

也可以1.删除项目图像2.更改图像名称3.添加文件图像到项目

它为我工作。

我在iPhone 6上的iOS 10中以及模拟器中遇到了这个问题。 我的图像在一个文件夹中,似乎是问题。 我从Xcode中的文件夹中删除图像,并把它放在项目的基本目录,解决了这个问题。

我也有同样的感受 我将图像分辨率从300像素/英寸更改为72.它适用于我。

下一个帮助我:

  • 将“启动屏幕文件”更改为另一个xib
  • 运行应用程序
  • 改变xib回来

同样非常重要的是 :检查你的xib是否在另一个选项卡中打开,这也可能导致它!

这是为我工作。

首先在xcode clean de project。

如果您使用模拟器,请删除应用程序并重新启动。

如果您使用设备,请删除应用程序并重新启动设备。

在我的情况下,我只是去应用程序目标 – >一般 – >应用程序图标和启动图像 – >启动图像源然后select来源,我把图像希望这会帮助你

对我来说,问题是我的Launchscreen的尺寸是1像素(2209×1242,而不是2208×1242)。 纠正它,然后重新启动设备和重build应用程序帮助。

我发现了一个简单而激进的解决scheme,对我有用:

1 – 删除文件:LaunchScreen.storyboard并将其移至垃圾箱。

2 – 产品 – >清洁

3 – 创build一个名为LaunchScreen.storyboard的新启动屏幕文件,并将其中的图像

4 – 保存并build立

这对我来说,在尝试复杂的方法几个小时后…我的LaunchScreen.storyboard似乎是写入locking,无法保存或一个奇怪的caching过程阻止它。

“myProject”与从Images.xcassets发起的许多图像。 但是,在删除并恢复项目中的“Assets.xcasset”之后,我将其删除并丢失。

  1. 意外删除Images.xcassets,但
  2. 将Images.xcasset添加回“myProject”

我遇到了这个缺失的图像问题,并尝试以下方法:

  1. 回收设备的电源,但不起作用。
  2. 使用Xcode在“清理”之后“build立”项目,也不起作用。

解决我的问题的解决scheme:

  1. 在“文件检查器显示”中的“目标成员”中,通过Xcode将Images.xcassets中的每个图像添加回“myProject”,并恢复正常。

从左侧菜单中select您的图像文件,从右侧的Utilities菜单中select“显示文件检查器”。 在目标成员身份下确保你的目标被选中。 我添加了图像与select目标,但我不知道为什么它是未选中的。 我尝试了所有的解决scheme,重新启动,删除等没有人工作。 只是这工作。 希望它可以帮助别人。

在我的情况下,我是这个图像的名字
我添加了一个名为Default-568h@2x.png的图像到LaunchScreen.xib – 我的旧启动屏幕之一,仅用于testing目的。 我在iPhone X模拟器上构build,图像没有显示出来。

更改名称为中性(MyImage.png)解决了这个问题。

看起来@2x是问题的一部分以及-568h 。 这在-812h@3x设备上有一定的意义。