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

时间:2018-02-27 18:55:28

标签: objective-c macos cocoa nsview

我发现这个在objective-c cocoa

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

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

例如,如果我有两个NSView对象,并且我运行此代码,我该如何指定要绘制哪个?

2 个答案:

答案 0 :(得分:3)

您不会在 NSView上运行此代码,而是在中运行 NSView子类覆盖{{1}方法。

您需要创建自己的-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一样。

答案 1 :(得分:1)

子类drawRect:,将您的代码添加到子类的NSView方法中,并将相应的{{1}}替换为您的类的实例。