从 Assets.xcassets 加载图像时 iOS 应用程序崩溃
Posted
技术标签:
【中文标题】从 Assets.xcassets 加载图像时 iOS 应用程序崩溃【英文标题】:iOS App Crashes while loading image from Assets.xcassets 【发布时间】:2017-06-12 06:33:00 【问题描述】:在名为“5”的 Assets.xcassets 中有一个名为“5.jpg”的图像文件。
我编写了代码UIImage *image = [UIImage imageNamed:@"5"];
来创建图像,但应用程序崩溃并在控制台中输出*** Assertion failure in -[_CUIThemePixelRendition _initWithCSIHeader:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreUI/CoreUI-432.4/CoreTheme/ThemeStorage/CUIThemeRendition.m:3797
。
【问题讨论】:
您没有收到编译器错误吗????字符串图像名称的开头缺少@
。
必须是该图像中使 CUIThemeRendition 从 CoreUI 崩溃的东西。更改图像,看看它是否仍然崩溃。如果没有,您应该为此向 Apple 提交错误报告 (rdar)。这是哪个 ios 版本发生的?
【参考方案1】:
我在运行 iOS 10 或更低版本的 XCode 9 测试版中遇到了这个问题。 Apple 似乎已经放弃了对 XCAssets 中 JPEG 文件的支持。您可以按照@Esha 的建议使用 do 并切换到 PNG,或者您不能使用 XCAsset,将图像放在本地目录中,并通过其 URL 引用它。
这可能是 Apple 故意这样做的(尽管如果他们这样做了,我找不到任何文档)或者这是一个 XCode 9 错误。我已经向苹果报告了,你可以跟踪bug的进度here.
【讨论】:
我想是的,我在 Xcode 9 中也遇到了这个问题,我必须使用 .png 而不是 .jpg,或者在 Xcode 8 中运行它。【参考方案2】:尝试将 .png 图像放入资产文件夹。 jpg 图像会导致此问题。
【讨论】:
这是否意味着 jpg 不能再出现在xcasset
中了?【参考方案3】:
该行应该是
UIImage *image = [UIImage imageNamed:@"5.jpg"];
如果文件是 PNG 格式,则无需指定 .PNG 文件扩展名。在 iOS 4 之前,您必须指定文件扩展名。
来自Apple Documentation
建议您对应用中的大多数图像使用 PNG 或 JPEG 文件。图像对象针对读取和显示这两种格式进行了优化,并且这些格式提供了比大多数其他图像格式更好的性能。由于 PNG 格式是无损的,因此特别推荐您在应用界面中使用的图像。
【讨论】:
以上是关于从 Assets.xcassets 加载图像时 iOS 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
从 Xcode Swift 中 Assets.xcassets 中的文件夹访问图像
ARKit 图像检测和从 Assets.xcassets 添加图像