【问题标题】:Does NSWindowController showWindow Trigger Embedded NSView setNeedsDisplay?NSWindowController showWindow 是否触发嵌入式 NSView setNeedsDisplay?
【发布时间】:2014-04-01 00:40:09
【问题描述】:

我有一个带有自定义 NSView 的窗口。我使用 NSWindowController 从代码中的 NIB 加载它。

问题:如果我为 NSWindowController 发送 showWindow 消息,它是否也会为窗口层次结构中嵌入的自定义 NSView 发送 setNeedsDisplay 消息?

【问题讨论】:

  • 我不知道。你为什么不尝试一下并找出答案? drawRect: 方法肯定会作为showWindow 的一部分被调用,如果您对此感到疑惑的话。
  • @AbhiBeckert,是的,我会尝试一下,但我想我会在这里利用更多经验丰富的人的心声......

标签: ios objective-c macos cocoa-touch cocoa


【解决方案1】:

一般来说,您只需要在-drawRect 中使用的值更改之后第一次出现视图时发送[self setNeedsDisplay:YES]。它应该始终由self 发送,其他对象永远不需要发送-setNeedsDisplay: 消息,除非是为了解决错误或其他问题。

由于showWindow 在窗口最初绘制到屏幕之前,您通常不需要-setNeedsDisplay:,除非(再次)您发现了错误。

如果您打开菜单项Xcode -> Open Developer Tool -> More Developer Tools... 并搜索“图形”,您可以下载一组工具,其中之一是 Quartz Debug。使用此调试器,您可以让屏幕在绘制到屏幕时闪烁黄色,并在屏幕绘制时重新绘制已经可见的内容时闪烁红色。

您可以使用它来找出屏幕的哪些部分刷新得太频繁了。

【讨论】:

  • 我认为你在这里的第一句话是一个很好的答案,或者到目前为止接近它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多