2017-06-12 5 views
3

"5.jpg"という名前の画像ファイルがAssets.xcassets "5"にあります。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をクラッシュさせるイメージ内のものである必要があります。画像を変更して、まだクラッシュしていないか確認してください。もしそうでなければ、アップルにこのバグ報告書(rdar)を提出してください.iOSバージョンはこれで起こっていますか? – Lefteris

答えて

7

iOS 10以降を実行しているXCode 9ベータ版でこの問題が発生しました。 AppleはXCAssetsのJPEGファイルのサポートを中止したようだ。 @Eshaを提案してPNGに切り替えたり、XCAssetを使用したり、ローカルディレクトリにイメージを置いたり、URLで参照することはできません。

アップルはこれを意図的に行っている可能性があります(もしそうであれば、私はそれについてのドキュメントを見つけることができませんでした)、これはXCode 9のバグです。私はリンゴに報告して、あなたはバグの進行状況を追跡することができますhere.

+0

Xcode 9でもこの問題がありましたが、.jpgの代わりに.pngを使用するか、Xcode 8で実行する必要があります。 – Mokyz

2

.pngの画像をアセットフォルダに入れてみてください。 jpg画像でこの問題が発生します。

+0

これは、jpgが 'xcasset'にもう存在しないことを意味しますか? – doctorBroctor

0

行は、ファイルがPNG形式である場合、.PNGファイル名の拡張子を指定する必要はありません

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

でなければなりません。 iOS 4より前には、ファイル名の拡張子を指定する必要があります。

Apple Documentation

から、あなたのアプリの中で最もイメージのPNGまたはJPEGファイルを使用することをお勧めします。イメージオブジェクトは、両方のフォーマットの読み込みと表示に最適化されており、他のほとんどのイメージフォーマットよりも優れたパフォーマンスを提供します。 PNG形式はロスレスであるため、アプリのインターフェースで使用する画像に特に推奨されます。

関連する問題