我创建了一个没有标题的窗口 -
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)
}
现在当我做一个toggleFullscreen之类的 -
@IBAction func goFullScreen(sender: AnyObject) {
self.view.window?.toggleFullScreen(sender)
}
屏幕的整个区域未填满。窗口后面有空白(黑色)背景。该应用应填充该空间,此屏幕截图中不应为黑色背景
如何解决此问题。谢谢你的帮助。
答案 0 :(得分:2)
问题是您的窗口无法调整大小。将styleMask
设置为NSBorderlessWindowMask
无意中删除了NSResizableWindowMask
。
您应该将styleMask
设置为NSBorderlessWindowMask | NSResizableWindowMask
。
答案 1 :(得分:0)
dirtyRect并不总是等于边界。因此,在窗口drawRect
调用NSRectFill(self.bounds)
中。填充操作不会影响整体绘图性能。
或者您可以在调整大小处理程序中将setNeedsDisplay
调用整个窗口标记为脏,并且只能使用脏区域。
如果您了解可能的性能下降问题,您可以将窗口内容标记为图层备份,并将图层的颜色设置为白色 - 这样会更有效(这也是如果在该视图上执行任何动画,则是最佳选项。
苹果在Optimizing View Drawing主题中介绍的其他一些技巧可能会对您有所帮助。