イメージビューのソースが属性インスペクタからあらかじめ設定されている場合、/ howがファイルの実際のパスが解決されたときに解決されますか? NSBundleへの呼び出しはないようですが、間違っている可能性があります。UIImageViewのイメージがInterface Builderから設定されている場合、そのイメージはどのように読み込まれますか?
EDIT:後で資産を後で動的に置き換えるために(可能であれば)どのようなメソッドを呼び出そうとしています。
イメージビューのソースが属性インスペクタからあらかじめ設定されている場合、/ howがファイルの実際のパスが解決されたときに解決されますか? NSBundleへの呼び出しはないようですが、間違っている可能性があります。UIImageViewのイメージがInterface Builderから設定されている場合、そのイメージはどのように読み込まれますか?
EDIT:後で資産を後で動的に置き換えるために(可能であれば)どのようなメソッドを呼び出そうとしています。
なしのUIImage
イニシャライザまたはファクトリが呼び出されています。
私はデバッガ(iOS Simulator 7.0.3)でいくつかの調査を行い、次のように見つけました。
1)UIImageView
は、IBで設定されており、-initWithCoder:
で初期化されています。
2)initWithCoder:
の方法でdecodeObjectForKey:
が呼び出されます。 UIImage
という名前の(!)キーには、IBの画像が含まれています。この画像はsetImage:
セッターではなく、イージーを通してUIImageView
に設定されています。
コンパイル中にIBが生の画像データをXIB/Storyboardにパックするようです。ナンセンスですが、本当です。なぜ我々は+imageNamed:
またはいくつかの他の工場をスウィズルすることはできませんだとretina4とiOS6
EDITための設定画像に条件付きコードを使用する必要があり
:
コメントは、コンパイル済みのIBファイルのhexdumpingは内部名をpngをしていることを表示します。出力を見て実際に
、 "hexdumpが-C バイツ-38-t0r - ビュー - 8BC-XF-vdC.nib" PNGのファイル名は、コンパイルされたファイルに表示されていることを示しています。したがって、同じバンドルのファイル名を使用してファイルデータ をロードする必要があります。
しかし、彼らはまだそれだけでビューコントローラがであるバンドルに対する相対ではないでしょうないimageNamed:
はい...そういうわけで、imageNamedのようないくつかのメソッドをうろつける方法はありませんか? – jerrygdm
あなたはそれを振りかざすことができますが、この特定の仕事のためには利益は得られません。 –
"IBパックの生の画像データをXIBにパックする"というコメントは理にかなっていません。私はちょうどコンパイルされたストーリーボードを見て、画像データが出力ファイルBYZ-38-t0r-view-8bC-Xf-vdC.nibにインライン化されていないことを発見しました。実際、 "hexdump -CYZ-38-t0r-view-8bC-Xf-vdC.nib"の出力を見ると、コンパイルされたファイルにPNGのファイル名が表示されます。したがって、同じバンドルのファイル名を使用してファイルデータをロードする必要があります。 – MoDJ
iOSが自動的にあなたのXIBファイルと同じバンドル内のファイルoverflow.png
を探します。 xibファイルがアプリケーションのターゲットにある場合、デフォルトではメインバンドルの内部を調べます。
あなたはプログラム的にイメージビューに新しいイメージをロードすると、あなたのイメージはメインバンドル内にある場合:
UIImage *image = [UIImage imageNamed:@"MyAwesomeImage"];
self.imageView.image = image;
あなたのイメージは、別のバンドル内にある場合:
NSBundle *imageBundle = ... // [NSBundle mainBundle] if your image is inside main bundle
NSString *imagePath = [imageBundle pathForResource:@"MyAwesomeImage" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
self.imageView.image = image;
を経由して、いくつかの内部機構を介してロードされていますか? – borrrden
[UIImage imageNamed:]と呼ばれることがありますか?私はすごい忍者ではないので、あなたはそれをどのように上書きできるのか分かりません。 – morningstar
良い推測ですが、そのメソッドを使用していないようです。 – kasrak