【问题标题】:Image does not update when changed if that image is used on LaunchScreen.storyboard如果在 LaunchScreen.storyboard 上使用该图像,则图像在更改时不会更新
【发布时间】:2016-04-24 12:14:51
【问题描述】:

首先这个问题与SO上的其他类似问题无关,因为这个问题涉及使用LaunchScreen.storyboard,而SO上提出的解决方案并不能解决这个问题。

我正在使用LaunchScreen.storyboard 中的图像。我更改了该图像,每次应用启动时都会显示旧图像。我尝试过的事情:

  1. 每次都以不同的方式命名图片
  2. 删除 de DerivedData 内容
  3. 将图片从 Assets 文件移到外部
  4. 产品 > 清洁
  5. 从设备中删除应用程序。
  6. 执行所有 1-4 并退出并重新启动 Xcode。

这很棒,但没有任何效果。除了巫毒,我什么都试过了。

上述技术似乎适用于其他地方使用的图像,但不适用于LaunchScreen.storyboard 使用的图像。

我正在设备上运行它。

有什么想法吗?

【问题讨论】:

  • 您是在代码中还是在 Xcode 中更改图像?
  • 您不能在 LaunchScreen.storyboard 中的代码中执行此操作,它必须由界面生成器完成。
  • 我知道。这就是为什么我问你是否愿意这样做。你的问题不是100%清楚。如果图像为零,您是否尝试过使用调试器和 testet?并且可以手动在代码中加载图片吗?
  • 理论上图像在那里,它显示在imageview中,所以它不是nil。
  • 仍然是 iOS 11.4 中的一个错误。似乎(未完全确认)我们可以使用约束移动图像,这将更新图像的位置,但是任何更新图像内容的尝试都会失败,并且总是显示旧图像。

标签: ios iphone xcode launch-screen


【解决方案1】:

可能的问题是 Springboard 按捆绑 ID 缓存启动图像。要强制重建,必要的步骤是

  1. 从设备中删除应用程序。
  2. 重启设备。
  3. 安装并运行应用程序。

但是,到目前为止,似乎确实存在未定义的完全失败案例。如果上述蛮力方法不起作用,请查看此 Radar 文件:UIImageView missing images in Launch Screen on device,它似乎描述了永久缓存失败。在这种情况下,更改您的捆绑包 ID 并查看是否显示预期的图像就是您所剩下的一切。

【讨论】:

  • 好的,删除应用即可解决问题。这里的问题是:Xcode 令人震惊。该雷达将其称为 iOS 9 问题,但我之前在 iOS 8 上看到过。当时我没有给予重视,因为我改变了 LaunchScreen.storyboard 的工作方式。每次更改图像时都必须重新启动设备,这太荒谬了。此外,Apple 需要很长时间才能修复问题,而 Xcode 是一场噩梦。无论如何感谢您的回答。
  • 实际上,Springboard 钝化的问题可以追溯到 iOS 2 —— 我们会更改 UIPrerenderedIcon Info.plist 标志来切换默认光泽效果的应用,Springboard 会愉快地忽略它现在设置的内容并使用其最后一个缓存的图标。所有的老问题又是新的!
  • 不幸的是,这个 bug 至少存在到 iOS 11.4 和生产/App Store 构建(更新)。我们不能只是强迫用户删除应用程序并重新安装。 ?
  • 在iOS13.2中... :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
相关资源
最近更新 更多