2017-06-12 35 views
3

名为“5”的Assets.xcassets中有一个名为“5.jpg”的图像文件。iOS App从Assets.xcassets加载图像时崩溃

我写了代码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

+0

你没有收到编译器错误?在字符串图像名称的开头缺少'@'。 – Bilal

+0

必须是该图像中从CoreUI崩溃CUIThemeRendition的内容。改变图像,看看它是否仍然崩溃。如果没有,你应该在苹果上提交一份bug报告(rdar)。这个iOS版本是怎么发生的? – Lefteris

回答

7

我在运行iOS 10或更低版本的XCode 9 beta中遇到了这个问题。看来苹果已经放弃了对XCAssets中JPEG文件的支持。您可以使用do建议使用@Esha并切换到PNG,也可以不使用XCAsset,将图像放在本地目录中,然后通过URL引用它。

苹果有可能故意这样做(尽管如果他们这样做了,我找不到任何文档)或者这是XCode 9的一个bug。我已经报告给苹果,你可以跟踪bug的进度here.

+0

我这么认为,我在Xcode 9中也遇到了这个问题,我必须使用.png来代替.jpg,或者在Xcode 8中运行它。 – Mokyz

2

尝试在资产文件夹中放置.png图像。 jpg图像将使这个问题。

+0

这是否意味着jpg不能再在'xcasset'中? – doctorBroctor

0

该行应

UIImage *image = [UIImage imageNamed:@"5.jpg"]; 

如果该文件是PNG格式,无需指定。PNG文件扩展名。在iOS 4之前,您必须指定文件扩展名。

Apple Documentation

建议您使用PNG或JPEG文件在您的应用程序大多数图像。图像对象针对阅读和显示这两种格式进行了优化,并且这些格式提供比大多数其他图像格式更好的性能。由于PNG格式无损,因此特别推荐您在应用界面中使用的图片。