无法识别的选择器 - [NSView borderRect]

时间:2013-02-13 16:39:41

标签: objective-c macos cocoa

我无法获得视图边框的NSRect。我一直收到一个无法识别的选择器错误。

以下是代码:

NSGradient *BorderGradient = [[NSGradient alloc] initWithStartingColor:[NSColor blackColor] endingColor:[NSColor whiteColor]];
[BorderGradient drawInRect:[self.window.contentView borderRect] angle:-90];
// Unrecognized Selector error here

我正在尝试访问border rect以向边框添加颜色渐变。当我尝试自己访问borderRect时,代码也会崩溃,如下所示:

NSRect rect = [self.window.contentView borderRect];
NSLog(@"origin.x = %f", rect.origin.x);

如果尝试将drawInRect:转换为CGRect。像这样:

NSGradient *BorderGradient = [[NSGradient alloc] initWithStartingColor:[NSColor blackColor] endingColor:[NSColor whiteColor]];
[BorderGradient drawInRect:NSRectToCGRect([self.window.contentView borderRect]) angle:-90];
// Unrecognized Selector error here

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

NSView(从self.window.contentView返回的内容)没有borderRect方法,导致无法识别的选择器错误

您可能需要framebounds

答案 1 :(得分:1)

NSView没有名为-borderRect的方法。这是您实施的自定义方法吗? NSBox确实有-borderRect方法。您是否期望窗口的内容视图是NSBox的实例?你有没有检查过,这确实是真的。

也许你真的想要-frame-bounds