我所拥有的是一个空白的应用程序,其中我尝试以编程方式在主窗口上绘制视图,也就是说没有先从Interface Builder中拖动“自定义视图”。从一些断点和一些NSLogs()判断我设置,似乎当我打电话
RectangleDrawer *rectangle1 = [[RectangleDrawer alloc] initWithFrame:NSMakeRect(10, 10, 50, 50)];
[[[[NSApplication sharedApplication] mainWindow] contentView] addSubView:rectangle1];
我可以告诉我我的rectangle1正在启动,因为它打印了一个NSLog但它没有在窗口上绘制视图。也就是说-(void)drawRect:(NSRect)dirtyRect
没有被调用,它不会打印出NSLog。 RectangleView很简单,是NSView
的子类,它使用NSRectFill([self bounds])
调用NSBlueColor
。
当我将视图拖到Interface Builder并将其类设置为RectangleView时,它完美地工作...绘制一个像魅力一样的蓝色框...
答案 0 :(得分:0)
我看到你添加了子视图,但是我没有看到你要重绘任何内容。如果您将-setNeedsDisplay:YES
发送到超级视图会怎样?
答案 1 :(得分:0)
我将底线改为
[_window.contentView addSubview:rectangle1];
现在它完美无缺......