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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIImageView在设备上的启动屏幕中丢失图像相关的知识,希望对你有一定的参考价值。

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

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

我运行了一些基本的故障排除,看看我是否能弄清楚发生了什么,但我无法解决它,我能看到的唯一区别是工作的图像和失败的图像是我将它添加到资产...

这是我所知道的简要说明:

  • 启动图像的UIImageView位于正确的位置,大小正确。我可以告诉这个,因为我将它的背景颜色设置为绿色只是为了确保。视图在那里,但图像不会出现。所以我假设这个观点不应该受到责备。
  • 将启动图像的UIImageView设置为也使用徽标图像可使徽标图像显示在视图的正确位置。这也让我认为这个观点不应该受到指责。
  • 我在启动图像视图中使用的UIImage在应用程序的其他地方使用,在其他视图中显示得很好(徽标图像也在应用程序的其他地方使用,看起来很好)。所以我假设图像有效并且让它出现在其他视图中不是问题。
  • 我已经确认xcassets文件中徽标和启动的UIImages设置是相同的。它们设置为通用,任意宽度和高度,多个比例因子,默认呈现。有一个区别 - 徽标有1x,2x和3x刻度,而初始图像只有1x和2x,但我也试过在UIView中只使用1x,1x和2x值的UIImages它们可以工作(如果它们是不久前加入了该项目)。
  • 将另一个不同大小或格式的图像(PNG和JPG)添加到我的xcassets并在UIImageView中使用该UIImage作为启动图像也无法显示。
  • 将另一个UIImageView添加到XIB文件并为其分配已在xcassets中运行的UIImage,图像将显示在加载屏幕中。
  • 复制和重命名用于徽标的图像文件并将其添加到项目中,然后在启动视图中使用该UIImage也无法显示。
  • 我已经尝试清理项目,重新启动开发机器,并从Air 2中删除应用程序并重新安装它以防万一出现问题。

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

我查看了json文件中的徽标图像和启动图像,它们看起来格式相同。我还浏览了pbxproj文件,寻找差异,我看不到任何差异。

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

答案

关闭然后再打开。

说真的,重新启动设备 - 这就是为我修复它的原因。

这是不起作用的:

  • 清理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

另一答案

您是否尝试过再次打开设备?做吧。

另一答案

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

Reset content and Settings menu

另一答案

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

另一答案

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

我修复它:

  • 删除驱动器数据
  • 清理项目
  • 重启Xcode
  • 从我的设备中删除项目
  • 重启5s。

我认为Xcode使用内存是错误的,系统可能会为Xcode分配一点内存导致Xcode绘制午餐图像失败(在我的电脑上,Xcode已经运行了几周没有关闭)

另一答案

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

另一答案

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

另一答案

它对我有用。

首先在xcode clean de project中。

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

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

另一答案

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

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

另一答案

重新启动Xcode为我做了。

什么没有做到:

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

这似乎是iOS的一个bug。就像有时系统动画消失了。

现在我只是重新启动iPhone,它对我有用。

另一答案

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

enter image description here

另一答案

在我的情况下,我是图像名称。 我在LaunchScreen.xib中添加了一个名为Default-568h@2x.png的图像 - 我的一个旧的启动屏幕仅用于测试目的。我正在iPhone X模拟器上构建,图像没有显示出来。

将名称更改为中性(MyImage.png)可以解决问题。

似乎@2x是问题的一部分以及-568h。这对-812h@3x设备有一定意义。

另一答案

这太重要了,一定是空的! Launch Screen File

enter image description here

另一答案

从移动设备中删除应用,然后重新启动移动设备并再次安现在问题将得到解决

另一答案

简单的解决方案是使用JPG而不是PNG。

另一答案

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

另一答案

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

它对我有用。

另一答案

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

另一答案

我经历过同样的经历。我将图像分辨率从300像素/英寸更改为72.它对我有用。

另一答案

接下来对我有帮助:

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

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

另一答案

我找到了一个对我有用的简单而激进的解决方案:

1 - 删除文件:LaunchScreen.storyboard并将其移至废纸篓。

2 - 产品 - >清洁

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

4 - 保存并构建

在尝试了几个小时的复杂方法之后,这对我有用......似乎我的LaunchScreen.storyboard是写锁定的,无法保存或者一个奇怪的缓存进程阻止了它。

另一答案

我在iPhone 6上遇到了完全相同的问题。

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

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

splashScreen in storyboard sample

希望这有帮助!

另一答案

图像名称是问题所在。重命名“启动”屏幕故事板中使用的图像名称。确保不要使用除字母数字之外的任何字符(不要使用“_-&@”)像魅力一样为我工作..

另一答案

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

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

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

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

应用程序使用缓存快照在支持将数据加载到内存之前显示图像,包括包含故事板图像的资产目录。

@jaga的This SO answer提供了解决方案,但不是原因,为什么在设备的启动屏幕中缺少UIImageViews(但不在模拟器中)。

背景

最近我试图在我的“Launch Screen.storyboard”文件中使用自定义字体。

我在@TimCamber阅读this SO answer之后无法明白的原因,这促使我做了更多的研究和测试。

我的启动屏幕故事板文件中未包含自定义字体的原因与未包含资产目录中的图像的原因相同...

该应用程序从Launch Screen Storyboard文件准备应用程序启动屏幕的纵向和横向快照,并且(当前)将其保存在您的应用程序包中:

  • /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 Screen Storyboard文件中引用UIImageView对象中的图像...

screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

另一答案

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

另一答案

我的解决方案@iOS 11.x:

  • 使用.jpg图像而不是.png。我认为图像文件大小很重要;
  • (可选)将图像文件放在项目目录中,而不是.xcassets;
另一答案

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