我NSDrawNinePartImage()
用来绘制一个可拉伸的控件。由于这当然需要九个单独的图像来绘制零件(加上一些在其上绘制的额外内容),所以我有一个目录,其中包含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];
}
这适用于普通显示器,但它忽略了视网膜显示器的 2x 图像。我怎样才能让它也加载视网膜图像?有没有比分别加载两个代表并手动组合它们更好的方法?我宁愿不使用 TIFF 作为这些资源的源文件,因为我使用 Acorn 作为我的图像编辑器,而上次我检查时,它并不能很好地理解这样的复合图像格式。