正在启动视图,但未调用 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
在 endInterruption 调用了 AVAudioSessionDelegate,但未调用 beginInterruption