我所拥有的是一个空白的应用程序,其中我试图以编程方式在主窗口上绘制视图,也就是说,没有首先从界面生成器中拖动"自定义视图"。从我设置的一些断点和一些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];