【发布时间】:2013-05-10 05:14:50
【问题描述】:
我正在使用NSDrawNinePartImage() 来绘制可拉伸控件。因为这当然需要九个单独的图像来绘制零件(加上一些在上面绘制的额外内容),所以我有一个充满文件的目录,例如top-left.png 和top-left@2x.png。我将此目录作为文件夹引用包含在我的应用程序包中。
不幸的是,-[NSImage imageNamed:] 和 -[NSBundle imageForResource:] 等常用的图像加载 API 似乎不支持子目录,即使您在名称中添加了斜线也是如此。相反,我使用这种方法加载图像:
- (NSImage*)popoverImage:(NSString*)name {
NSURL * url = [[NSBundle bundleForClass:self.class] URLForResource:name withExtension:@"png" subdirectory:@"popover"];
return [[NSImage alloc] initWithContentsOfURL:url];
}
这适用于普通显示器,但它忽略了视网膜显示器的 2x 图像。我怎样才能让它也加载视网膜图像?有没有比分别加载两个代表并手动组合它们更好的方法?我宁愿不使用 TIFF 作为这些资源的源文件,因为我使用 Acorn 作为我的图像编辑器,而上次我检查时,它并不能很好地理解这样的复合图像格式。
【问题讨论】: