草庐IT

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

coder 2023-04-25 原文

我有一个支持 iOS8 及更高版本的应用程序,内置于 Xcode 7 中,我正在使用 XIB 作为启动屏幕(我没有启动图像)。该 View 包含一个带有应用程序版本的 UILabel,以及 2 个带有图像的 UIImageView,它们都存在于 Images.xcassets 中:一个 Logo 和一个启动图像。

当我启动应用程序时,UILabel 和 Logo 图像正确显示,但如果我在装有 iOS9 的 iPad Air 2 上运行应用程序,则启动图像不会。我已经在运行 iOS8 的 Air 和 Mini 以及适用于 iPad 2、iPad Air 和 iPad Air 2 的 iOS9 模拟器上进行了测试,并且图像在所有这些模拟器中都正确显示。

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

以下是我所知道的概要:

  • 初始图像的 UIImageView 位于正确的位置,大小正确。我可以这么说,因为我将它的背景颜色设置为绿色只是为了确保。 View 在那里,但图像没有出现。所以我假设观点不应该受到指责。

  • 将初始图像的 UIImageView 设置为也使用 Logo 图像会使 Logo 图像出现在 View 的正确位置。这也让我认为观点不应该受到指责。

  • 我在启动 ImageView 中使用的 UIImage 在应用程序的其他地方使用,并且在其他 View 中显示良好( Logo 图像也在应用程序的其他地方使用并且显示良好)。所以我假设图像是有效的并且让它出现在其他 View 中是没有问题的。

  • 我已经确认 xcassets 文件中 logo 和 splash 的 UIImages 设置是相同的。它们设置为通用、任意宽度和高度、多个比例因子,默认呈现。有一个区别 - Logo 有 1x、2x 和 3x 比例,而初始图像只有 1x 和 2x,但我也尝试在 UIView 中使用只有 1x、1x 和 2x 值的 UIImages 并且它们可以工作(如果它们是前段时间添加到项目中)。

  • 向我的 xcassets 添加另一个不同大小或格式(PNG 和 JPG)的图像并在 UIImageView 中使用该 UIImage 作为初始图像也无法显示。

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

  • 复制和重命名用于 Logo 的图像文件并将它们添加到项目中,然后在启动 View 中使用该 UIImage 也无法显示。

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

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

我查看了 Logo 图像和启动图像的 json 文件,它们似乎具有相同的格式。我还浏览了 pbxproj 文件以寻找差异,但我看不到任何差异。

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

最佳答案

将其关闭然后重新打开。

说真的,重新启动设备 - 这就是为我解决的问题。

以下是无效的:

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

旧观察:

就像其他人一样,它:

  • 在模拟器中运行良好
  • 曾在设备(iPhone 5S、iPad Air)上工作
  • 没有代码更改(通过 git reset --hard HEAD 验证),但已停止工作。

我记得触发它停止工作的第一个构建是在 iPhone 运行时拔掉它。 (不确定是否相关。)

但是,git reset 没有修复它(结合所有不工作的清理步骤)告诉我它必须在其他地方缓存。很可能在 .gitignored 文件之一中? (我用的是 Git ignore file for Xcode projects)

一种适用于一个 UIImageView(在具有三个的 UIView 中)但不适用于其他 UIImageView 的解决方法是将图像放入 .xcassets 文件中。恢复到普通图像文件并没有撤消修复。 (真的感觉像是缓存错误。)

更新:见顶部 - 重新启动设备是修复它的方法。我感觉设备本身缓存了错误的位图数据。

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

关于ios - UIImageView 在设备上的启动屏幕中缺少图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579150/

有关ios - UIImageView 在设备上的启动屏幕中缺少图像的更多相关文章

  1. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  2. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  5. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  6. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  7. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  8. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  9. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  10. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

随机推荐