UIImageView在设备上启动屏幕中缺少图像

ut_quo 发布于 2019-07-24 ios 最后更新 2019-07-24 20:04 394 浏览

我有一个支持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模拟器进行了测试,并且所有这些图片均正确显示。 我运行了一些基本的故障排除,看看我是否能够弄清楚发生了什么,但是我还没有能够解决这个问题,我能够看到的工作图像和失败图像之间的唯一区别是当我将它添加到资产... 以下是我所知道的一个概要:

  • 飞溅图像的UIImageView位于正确的位置,大小正确。我可以说这是因为我将它的背景颜色设置为绿色以确保。视图在那里,但图像不显示。所以我假设这个观点不是怪罪。
  • 将飞溅图像的UIImageView设置为也使用徽标图像,使徽标图像显示在视图的正确位置。这也导致我认为这个观点不是怪罪。
  • 我在飞溅图像视图中使用的UIImage在应用程序中的其他位置使用,并且在其他视图中显示正常(徽标图像也用于应用程序中的其他位置,并且显示正常)。所以我假设图像是有效的,并且它出现在其他视图中不是问题。
  • 我已确认徽标的UIImages设置和xcassets文件中的splash设置相同。它们设置为通用,任何宽度和高度,多个比例因子,默认呈现。有一个区别 - 该徽标有1倍,2倍和3倍的比例,而飞溅图像只有1倍和2倍,但我也尝试过使用UIImages只有1倍,1倍和2倍值在UIView和他们的工作(如果他们前一段时间添加到项目中)
  • 将另一张尺寸或格式不同的图片(PNG和JPG)添加到我的xcassets中,并在UIImageView中使用UIImage作为splash图片也无法显示。
  • 将另一个UIImageView添加到XIB文件并为其分配一个已经在xcassets中的UIImage,该图像显示在加载屏幕中。
  • 复制并重命名用于徽标的图像文件并将其添加到项目中,然后在splash视图中使用该UIImage也无法显示。
  • 我尝试清理项目,重新启动开发计算机,并从Air 2中删除应用程序,并重新安装以防万一出现问题。
最后三个步骤使我相信,在项目文件的生命周期的某个点之后添加的图像存在一些问题。虽然我昨天更新了Xcode 7,但最初在Xcode 6中添加了初始图像,但在几个月之前添加了徽标图像(也添加到Xcode 6中)。 我查看了json文件中的徽标图像和闪屏图像,并且它们显示为具有相同的格式。我也浏览了pbxproj文件寻找差异,我看不到任何。 所以我想知道如果有人有任何想法,为什么启动屏幕可能不会显示这些新的图像,我特别添加在Air 2上?我一直在阅读的有关未出现图像的其他问题似乎都与启动图像或与具有关联类的XIB文件中的图像有关,这两者在这里似乎都不相关。
已邀请:

lmagni

赞同来自:

我对从TestFlight安装的应用程序也有同样的看法。 删除应用程序 - >然后重新启动iPhone - >然后重新安装应用程序适合我。 只是重新安装应用程序或只是重新启动设备没有帮助。

iullam

赞同来自:

也可以1.删除项目图像2.更改图像名称3.将文件图像添加到项目中 它对我有用。

overo

赞同来自:

您是否尝试过重新打开设备?做吧

wsed

赞同来自:

将图像从Image.xcassets中移出并再次添加到项目中。它对我有用。

xesse

赞同来自:

这似乎是iOS的一个bug。就像有时系统动画消失了。 现在我只是重启iPhone,它对我有用。

mest

赞同来自:

我也在Xcode 7中使用iPad和iPhone设备遇到了这个问题。虽然没有任何意义,但我能够通过将图像视图中的图像和高亮显示的图像设置为我的images.xcassets中的相同图像来大部分时间绕过它。

amodi

赞同来自:

它对我有用。 首先在xcode clean de project中。 如果您使用模拟器,请删除应用程序并重新启动。 如果您使用设备,请删除应用并重启设备。

id_aut

赞同来自:

以下操作序列为我在Xcode 7.3.1和iOS 9.3.4上解决了这个问题:

  1. 清理构建(⌘+⇧+ K)
  2. 关闭Xcode
  3. 硬重置iOS设备(电源+主页按钮重启)
  4. 重新启动Xcode - 一旦准备好,就让索引完成并在设备上构建。

yet

赞同来自:

“我的解决方案就是确保在故事板中为UIImageView取消选中”清除图形上下文“框。只需更改它就可以为我修复它。” 没有其他解决方案适合我。 来自apple developer forum enter image description here

gsint

赞同来自:

我遇到了同样的问题,但重新启动设备没有帮助。对我有用的是从我的发布故事板中删除UIImageView并添加一个新的故事板。

gest

赞同来自:

在我的情况下,我只是去应用程序目标 - >常规 - >应用程序图标和启动图像 - >启动图像源 然后选择放置图像的源 希望对你有帮助

eet

赞同来自:

对我来说,问题是我的Launchscreen的大小偏离了1个像素(2209x1242而不是2208x1242)。更正它,然后重新启动设备并重建应用程序有帮助。

miste

赞同来自:

重新启动Xcode为我做了。 什么没有做到:

  • 清理构建文件夹
  • 重新启动设备或模拟器(图像在任何一个上都不可见)

paut

赞同来自:

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

  • Remove Drive Data
  • Clean the project
  • Restart Xcode
  • Remove the project from my device
  • Restart the 5s.
我认为Xcode使用内存是错误的,系统可能会为Xcode分配一点内存导致Xcode绘制午餐图像失败(在我的电脑上,Xcode已经运行了几个星期没有关闭)

iullam

赞同来自:

许多其他答案建议重启设备和/或重建和/或重新安装是解决方案。 虽然这些答案适用于我们中的一些人,但这些工作的原因是因为应用程序被迫“重新获得”或“重建”缓存的快照。 应用程序使用缓存快照在支持将数据加载到内存之前显示图像,包括包含故事板图像的资产目录。 @jaga的This SO answer提供了解决方案,但不是原因,为什么在设备的启动屏幕中缺少UIImageViews(但不在模拟器中)。 背景 最近我试图在我的“Launch Screen.storyboard”文件中使用自定义字体。 在阅读@TimCamber的this SO answer之后我无法理解的原因,这促使我做了更多的研究和测试。 我的启动屏幕故事板文件中未包含自定义字体的原因与未包含资产目录中的图像的原因相同... 该应用程序准备肖像&启动屏幕故事板文件中应用程序启动屏幕的横向快照,并且(当前)将其保存在您的应用程序包中:

  • /Library/Caches/Snapshots/<<app_bundle>>/
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/
在加载任何支持文件之前,此过程已完成,包括任何自定义字体和资产目录。 解 如上所述,遵循@ jaga的解决方案,所需要的只是:
  1. (旧学校)将图像文件(.PNG)添加到应用程序包中(如下面的屏幕截图所示,我在Images子目录的Supporting Files子目录下添加了图像文件),并且
screenshot of relevant directories in Project Navigator in Xcode
  1. 在Launch中引用UIImageView对象中的图像 屏幕故事板文件......
screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

mex

赞同来自:

我在iPhone 6上遇到了完全相同的问题。 非常奇怪的事实是我能够使用我的images.xcassets中的另一个图像,它具有相同的大小,压缩,颜色空间...... 我无法找到它为什么不起作用,但我找到了一个解决方案: 只需将您的文件放在images.xcassets之外,并在Interface Builder中使用其全名(带扩展名) splashScreen in storyboard sample 希望这有帮助!

jquia

赞同来自:

我找到了一个对我有用的简单而激进的解决方案: 1 - 删除文件:LaunchScreen.storyboard并将其移至废纸篓。 2 - 产品 - >清洁 3 - 创建一个名为LaunchScreen.storyboard的新启动屏幕文件,并将图像放入其中 4 - 保存并构建 在尝试了几个小时的复杂方法后,这对我有用......似乎我的LaunchScreen.storyboard是写锁定的,无法保存,或者一个奇怪的缓存进程阻止了它。

et_id

赞同来自:

选择ImageView,然后在属性检查器选项卡>图像视图>图像>图像名称中删除图像扩展名(.png或.jpg)。 在launchscreen.storyboard上,图像不会出现,但它会出现在设备中。这对我有用。

gquia

赞同来自:

对我有用的是从模拟器菜单中选择重置内容和设置.... Reset content and Settings menu

dquia

赞同来自:

我认为launchscreen只支持Assets.xcassets中的图像。

eomnis

赞同来自:

“myProject”包含从Images.xcassets启动的许多图像。但是,在删除并恢复项目中的“Assets.xcasset”后,我将丢失图像。

  1. 意外删除Images.xcassets,但
  2. 将Images.xcassets添加回“myProject”
我遇到了这个缺少图像的问题,并尝试了以下方法:
  1. 恢复设备的电源,但不起作用。
  2. 在“清理”之后使用Xcode“构建”项目,它也不起作用。
解决我的问题的方法:
  1. 将Images.xcassets中的每个和每个图像通过Xcode在“目标成员资格”中的“在文件检查器中显示”添加回“myProject”,它恢复正常。

mest

赞同来自:

关闭然后再打开。 说真的,重新启动设备 - 这就是为我修复它的原因。 这是不起作用的:

  • 清理DerivedData
  • 清洁项目
  • 从设备中卸载应用
  • 重新启动Xcode
  • 重新启动计算机
较旧的观察: 就像其他人一样,它:
  • 在模拟器中正常工作
  • 用于在设备上工作(iPhone 5S,iPad Air)
  • 没有代码更改(通过git reset --hard HEAD验证),但已停止工作。
我记得当它停止工作时触发第一个构建是在iPhone运行时拔掉它。 (不确定它是否相关。) 但是,git重置没有修复它(结合所有干净的步骤不起作用)告诉我它必须在其他地方缓存。很可能在一个.gitignored文件中? (我正在使用Git ignore file for Xcode projects) 对于一个UIImageView(在UIView中有三个)但不适用于其他UIImageView的一种解决方法是将图像放入.xcassets文件中。恢复到普通图像文件没有撤消修复。 (真的感觉像是一个缓存错误。) 更新:请参阅顶部 - 重启设备是什么修复它。我感觉错误的位图数据正缓存在设备本身上。 雷达:http://openradar.appspot.com/23534818

xnam

赞同来自:

在我的情况下,我是图像名称。
我在LaunchScreen.xib中添加了一个名为Default-568h@2x.png的图像 - 我的一个旧的启动屏幕仅用于测试目的。我在iPhone X模拟器上构建,图像没有显示出来。 将名称更改为中性(MyImage.png)可以解决问题。 似乎@2x是问题的一部分以及-568h。 这对-812h@3x设备有一定意义。

onam

赞同来自:

从左侧菜单中选择您的图像文件,从右侧的Utilities菜单中选择“show the file inspector”。在目标成员资格下,确保选择目标。我添加了图像并选择了目标,但我不知道为什么它未被选中。我尝试了所有解决方案,重新启动,删除等没有人工作。这才有效。希望它可以帮助别人。

verror

赞同来自:

这太重要了 一定是空的! enter image description here

lquia

赞同来自:

我对imageView的启动画面故事板有同样的问题。我从项目中删除了图片的引用,我重命名了我的图像并将其添加到项目中。一切都很完美。

onam

赞同来自:

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

reos

赞同来自:

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

eet

赞同来自:

接下来对我有帮助:

  • 将“启动屏幕文件”更改为另一个xib
  • 运行应用
  • 将xib改回来
同样非常重要的是:检查你的xib是否未在另一个标签中打开,这也可能导致它!

nin

赞同来自:

我看到了同样的问题。重新启动设备(iPhone 6)并将应用程序重建到设备是修复它的唯一方法。我尝试了许多其他的提示和建议,但没有其他工作。只有reboot + rebuild有帮助。