NSDrawNinePartImage()
伸縮可能なコントロールを描画するために使用しています。もちろん、これにはパーツを描画するために 9 つの個別の画像が必要なので (さらに、その上に描画される追加の画像もいくつか必要です)、 および のようなファイルでいっぱいのディレクトリがありtop-left.png
ますtop-left@2x.png
。このディレクトリをフォルダー リファレンスとしてアプリ バンドルに含めます。
残念ながら、通常の画像読み込み APIは、名前にスラッシュを入れても、サブディレクトリをサポートしていないようです-[NSImage imageNamed:]
。-[NSBundle imageForResource:]
代わりに、次の方法で画像をロードしています。
- (NSImage*)popoverImage:(NSString*)name {
NSURL * url = [[NSBundle bundleForClass:self.class] URLForResource:name withExtension:@"png" subdirectory:@"popover"];
return [[NSImage alloc] initWithContentsOfURL:url];
}
これは通常のディスプレイでは問題なく機能しますが、Retina ディスプレイの 2x 画像は無視されます。網膜画像もロードするにはどうすればよいですか? 2 つの担当者を別々にロードして手動で組み合わせるよりも良い方法はありますか? これらのリソースのソース ファイルとして TIFF を使用したくありません。なぜなら、私は Acorn をイメージ エディターとして使用しており、最後にチェックしたとき、Acorn はそのような複合イメージ フォーマットをあまりよく理解していなかったからです。