正在启动视图,但未调用 drawRect:

Posted

技术标签:

【中文标题】正在启动视图,但未调用 drawRect:【英文标题】:View is being initiated, but drawRect: is not called 【发布时间】:2011-12-26 07:22:46 【问题描述】:

我拥有的是一个空白应用程序,其中我尝试以编程方式在主窗口上绘制视图,也就是说,无需先从 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 时,它可以完美运行...绘制一个像魅力一样的蓝色框...

【问题讨论】:

【参考方案1】:

我看到您添加了子视图,但我没有看到您告诉任何要重绘的内容。如果您将-setNeedsDisplay:YES 发送到superview 会发生什么?

【讨论】:

什么都没有。同样,当我在 initWithFrame: 方法中调用 [self display] 时也没有任何反应。【参考方案2】:

我把底线改成阅读了

[_window.contentView addSubview:rectangle1];

现在它完美运行了......

【讨论】:

以上是关于正在启动视图,但未调用 drawRect:的主要内容,如果未能解决你的问题,请参考以下文章

pushViewController 为导航栏设置动画,但未显示新视图 [关闭]

调用 ViewDidLoad 但未调用 ViewWillAppear

iOS 框架 - 已加载 nib 但未设置视图出口

Android - 正在发生但未显示的视图

方法被调用但未执行

在 endInterruption 调用了 AVAudioSessionDelegate,但未调用 beginInterruption