次のようにSwiftでXcode6ベータ3のpng画像を含むUIImagesをロードする場合:
PipsImg = (UIImage(named: "Die-1"))
または
PipsImg = [(UIImage(named: "Die-1")),(UIImage(named: "Die-2"))]
images.xcassetsフォルダーに保存されている関連画像から、次の致命的なランタイムエラーが発生します。
SimpleAnimation[680:60b] Unsupported pixel format in CSI
SimpleAnimation[680:60b] Unable to create unsliced image from csi bitmap data.
これはベータ4で解決されたようですが、これらのリグレッションが発生することがあるため、しばらくはそのままにしておきます
これは、Xcode 6(現時点ではベータ3)のバグが原因です。ビルドターゲットがiOS7.xの場合にのみ発生するようです
この問題を回避するには:
1)Images.xcassetsコンテナからファイルを削除します。
2)画像を「SupportingFiles」フォルダに直接配置します。
注:コード内に「.png」拡張子を追加する必要はないため、これはクリーンな回避策になります。
AppleへのRADAR(バグレポート)を作成してください。
XCode6.0.1にはまだこの問題があります。 Images.xcassetsに.jpgを追加し、iOS7デバイスにアプリをインストールしようとした場合。
これを修正するには、.jpgを.pngに変換するだけです。
Appleエンジニアの応答:
問題は、iOS7アプリがCARファイルにJPEG画像を含めることができないことです。 actoolは、JPEGをルーズイメージとしてアプリのフォルダーにコピーする必要があります。この問題を回避するには、画像をPNGに変換するか、アセットカタログの外部のリソースとしてJPEGを含める必要があります。
私はこの問題を次の方法で解決しました:
Xcodeでは、画像リソースのスライスを実行できるようになりました。スライスが追加されると、アセットカタログ内の画像に対応するjsonがサイズ変更情報を取得します。これは例えばこのように見えるかもしれません
"resizing" : {
"mode" : "3-part-vertical",
"center" : {
"mode" : "fill",
"height" : 6
},
"capInsets" : {
"top" : 16,
"bottom" : 6
}
}
iOS7.0はスライスを適切に処理しません。したがって、jsonからスライス情報を削除すると、問題の修正に役立つ場合があります(私の場合はそれが解決策でした)。