到目前为止,这是我的代码(在绘制矩形中):
// Drawing code here.
NSLog(@"%@", [[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]);
NSURL *pathToBGImage = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]];
NSImage *NoiseBGMainView = [[NSImage alloc] initWithContentsOfURL:pathToBGImage];
[NoiseBGMainView drawInRect:[self bounds] fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];
图像没有画出......我不知道出了什么问题。
答案 0 :(得分:4)
为什么不直接使用[NSImage imageNamed:@"NoiseBGMainView.jpg"]
?这将为您提供NSImage
的图片(如果可以找到),如果不能,则为nil
。 NSLog
该调用的结果是什么,然后报告是否正在记录(null)
。
答案 1 :(得分:1)
通过将NSImageView附加到视图并将图像资源设置为NSImageView的图像,可以在不编写任何绘图代码的情况下将NSImage绘制到NSView中。 (NSImageView处理所有绘图)。
如果从笔尖加载自定义NSView,则不需要任何设置代码 - 只需与Interface Builder建立适当的NSView-NSImageView-NSImage(资源)连接。
答案 2 :(得分:1)
NSURL *pathToBGImage = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]];
这是错误的。 -[NSURL initWithString:]
采用网址的字符串版本,例如http://apple.com/,而不是路径名。
由于您未传递URL,因此该URL将是相对URL,但相对URL需要基础。 URL是有效的对象,但不会在任何地方引导。反过来,这会导致initWithContentsOfURL:
返回nil
(因为您尝试从没有基础的相对网址加载图片)。然后你尝试告诉图像绘制,但你没有图像,所以没有任何反应。
你想要initFileURLWithPath:
。 (或者类方法fileURLWithPath:
,稍后您不必使用它来释放URL。)