视图正在被初始化,但是没有调用drawRect



我所拥有的是一个空白的应用程序,其中我试图以编程方式在主窗口上绘制视图,也就是说,没有首先从界面生成器中拖动"自定义视图"。从我设置的一些断点和一些NSLogs()判断,似乎当我调用

RectangleDrawer *rectangle1 = [[RectangleDrawer alloc] initWithFrame:NSMakeRect(10, 10, 50, 50)];
[[[[NSApplication sharedApplication] mainWindow] contentView] addSubView:rectangle1];

我可以告诉我的rectangle1正在被启动,因为它打印了一个NSLog,但它没有在窗口上绘制视图。也就是说,没有调用-(void)drawRect:(NSRect)dirtyRect,它不打印其中的NSLog。矩形视图是简单的,NSView的子类,它调用NSRectFill([self bounds])NSBlueColor

当我把视图拖到界面生成器上,并将它的类设置为RectangleView,它可以完美地工作…画一个蓝色的方框,就像一个符咒…

我看到你添加了子视图,但我没有看到你告诉任何重绘。如果你发送-setNeedsDisplay:YES到父视图会发生什么?

我把下面一行改成

[_window.contentView addSubview:rectangle1];

最新更新