UIImageView在设备

时间:2015-09-15 06:29:40

标签: ios objective-c uiimageview uiimage launch-screen

我有一个支持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文件中具有关联类的图像有关,这两种图像似乎都不相关。

35 个答案:

答案 0 :(得分:466)

关闭然后再打开。

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

以下是不起作用的内容:

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

答案 1 :(得分:144)

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

获得

enter image description here

答案 2 :(得分:96)

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

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

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

中使用其全名(带扩展名)

splashScreen in storyboard sample

希望这有帮助!

答案 3 :(得分:32)

以下操作序列为我解决了Xcode 7.3.1和iOS 9.3.4的问题:

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

答案 4 :(得分:26)

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

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

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

@jaga的

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

<强>背景

最近我尝试在我的&#34; Launch Screen.storyboard&#34;中使用自定义字体。文件。

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

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

该应用程序准备肖像&amp;启动屏幕故事板文件中应用程序启动屏幕的横向快照,并且(当前)将其保存在您的应用程序包中:

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

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

<强>解决方案

如上所述,遵循@ jaga的解决方案,所需要的只是:

  1. (旧学校)将图像文件(.PNG)添加到您应用程序的软件包中(如下面的屏幕截图所示,我在Images子目录的Supporting Files子目录下添加了图像文件),并且< / LI>

    screenshot of relevant directories in Project Navigator in Xcode

    1. 在Launch中引用UIImageView对象中的图像 屏幕故事板文件......
    2. screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

答案 5 :(得分:21)

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

答案 6 :(得分:16)

我对从TestFlight安装的app有同样的看法。 删除应用 - &gt;然后重启iPhone - &gt;然后重新安装应用程序为我工作。 只需重新安装应用程序或只是重新启动设备没有帮助。

答案 7 :(得分:16)

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

  • 使用.jpg图片代替.png。我认为图像文件大小很重要;
  • (可选)将图像文件放在项目目录而不是.xcassets;

答案 8 :(得分:8)

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

答案 9 :(得分:8)

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

答案 10 :(得分:7)

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

Reset content and Settings menu

答案 11 :(得分:6)

将图片从 Image.xcassets 中删除,然后将其重新添加到项目中。它对我有用。

答案 12 :(得分:5)

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

我通过以下方式修复:

  
      
  • 删除云端硬盘数据

  •   
  • 清理项目

  •   
  • 重启Xcode

  •   
  • 从我的设备中删除项目

  •   
  • 重启5s。

  •   

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

答案 13 :(得分:4)

它为我工作。

首先在xcode clean de project中。

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

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

答案 14 :(得分:4)

我认为启动画面仅支持Assets.xcassets中的图像。

答案 15 :(得分:4)

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

答案 16 :(得分:3)

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

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

答案 17 :(得分:2)

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

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

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

答案 18 :(得分:2)

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

答案 19 :(得分:2)

从移动设备删除应用,然后重新启动移动并重新安装应用。现在问题将会解决

答案 20 :(得分:2)

这太重要 必须为空Launch Screen File

enter image description here

答案 21 :(得分:2)

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

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

答案 22 :(得分:2)

重新启动Xcode为我做了。

做了什么:

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

答案 23 :(得分:1)

接下来帮助了我:

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

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

答案 24 :(得分:1)

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

它对我有用。

答案 25 :(得分:1)

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

答案 26 :(得分:1)

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

答案 27 :(得分:1)

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

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

2 - 产品 - &gt;清洁

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

4 - 保存并构建

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

答案 28 :(得分:1)

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

答案 29 :(得分:1)

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

答案 30 :(得分:1)

已解决!

对我唯一有效的方法是从ViewController删除LaunchScreen.storyboard并创建一个新的ViewController设置为

  

是初始视图控制器

就这么简单:)

答案 31 :(得分:0)

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

答案 32 :(得分:0)

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

  1. 意外删除Images.xcassets,但
  2. 将Images.xcassets添加回“myProject”
  3. 我遇到了这个缺少图像的问题,并尝试了以下方法:

    1. 恢复设备的电源,但不起作用。
    2. 在“清理”之后使用Xcode“构建”项目,它也不起作用。
    3. 解决我的问题的方法:

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

答案 33 :(得分:0)

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

答案 34 :(得分:0)

在我的情况下,我只是去app app TARGETS - &gt;一般 - &gt;应用程序图标和启动图像 - &gt;启动图像源 然后选择我放置图像的源 希望这会对你有所帮助