objective-c如何指定在哪个NSView上绘制?

How to specify which NSView to draw on in objective-c?

我在 objective-c cocoa

中找到了这个绘制矩形的示例
NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];

但是,我应该在哪里指定which NSView 在代码中绘制?

例如,如果我有两个 NSView 对象,并且我 运行 这段代码,我如何指定在哪一个上绘制?

Subclass NSView,将您的代码添加到 subclass 的 drawRect: 方法中,并用实例替换适当的 NSView你的 class.

您不 运行 此代码 NSView 上,而是 运行s NSView 子类对 -drawRect: 方法的覆盖。

您需要创建自己的 NSView 子类,然后在该子类中覆盖 -drawRect: 并将此代码放在那里:

@interface CustomView : NSView
@end

@implementation CustomView

- (void)drawRect:(NSRect)dirtyRect
{
    NSRect r = NSMakeRect(10, 10, 50, 60);
    NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
    NSColor *color = [NSColor blueColor];
    [color set];
    [bp stroke];
}

@end

最后,您当然必须实例化 CustomView 的实例并将其添加到您的视图层次结构中,就像您通常对常规 NSView.

所做的那样