为什么 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
。
我创建了一个 window 没有标题 -
override func windowDidLoad() {
super.windowDidLoad()
self.window?.styleMask = NSBorderlessWindowMask
self.window?.movableByWindowBackground = true
}
我已经通过-
设置了canBecomeKeyWindowoverride 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
。