为什么 window 背景在全屏时保持黑色?

Why does the window background remain black in fullscreen?

我创建了一个 window 没有标题 -

 override func windowDidLoad() {
    super.windowDidLoad()
    self.window?.styleMask = NSBorderlessWindowMask 
    self.window?.movableByWindowBackground = true
}

我已经通过-

设置了canBecomeKeyWindow
override var canBecomeKeyWindow:Bool
{
    get{
        return true
    }

}

我已经通过-

更改了容器视图的背景颜色
  override func drawRect(dirtyRect: NSRect) {
    super.drawRect(dirtyRect)

    var viewcolor = NSColor.whiteColor()
    viewcolor.setFill()
    NSRectFill(dirtyRect)


}

并且将自定义视图作为子视图添加到此容器视图中,并且我通过以下方式更改了自定义视图的背景颜色-

 override func drawRect(dirtyRect: NSRect) {
    super.drawRect(dirtyRect)

    NSColor(SRGBRed: 0.8, green: 0.26, blue: 0.33, alpha:1.0).set()
    NSRectFill(self.bounds)
}

现在当我像这样切换全屏时-

 @IBAction func goFullScreen(sender: AnyObject) {
    self.view.window?.toggleFullScreen(sender)


}

整个屏幕区域未填满。创建的 window 后面有空白(黑色)背景。该应用程序应填充space,此屏幕截图中不应有黑色背景

我该如何解决这个问题。感谢您的帮助。

dirtyRect 并不总是等于边界。因此,在 window 的 drawRect 中调用 NSRectFill(self.bounds)。填充操作不会影响整体绘图性能。

或者您可以在调整大小处理程序中使用 setNeedsDisplay 调用将整个 window 矩形标记为脏区域,并且只能使用脏区域。

如果您意识到可能的性能下降问题,您可以将 window 的内容标记为图层支持并将图层的颜色设置为白色 - 这样会更有效(这也是最好的如果您在该视图上执行任何动画,则选项)。

Apple 在 Optimizing View Drawing 主题中描述了一些您可能会觉得有用的技巧。

问题是您的 window 无法调整大小。将 styleMask 设置为 NSBorderlessWindowMask 无意中删除了 NSResizableWindowMask

您应该将 styleMask 设置为 NSBorderlessWindowMask | NSResizableWindowMask