【发布时间】:2015-02-02 13:39:28
【问题描述】:
我正在使用drawRect 在自定义视图中绘制一个 NSString,它是NSButton 的子视图。 NSButton 的drawRect 也在绘制NSImage,这似乎是问题所在。如果我删除 NSImage 的 drawRect 代码,它就不会再发生(但我没有背景)。
这是自定义视图drawRect(缩短):
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
let string: NSString = NSString(string: thermostat.displayTargetTemperature())
string.drawAtPoint(NSMakePoint(CGFloat(width), CGFloat(y)), withAttributes: self.attributes)
}
这里是NSButtondrawRect:
override func drawRect(dirtyRect: NSRect) {
var image = NSImage(named: FILDarkManager.enabled ? "preferences-statusbar-bg-dark" : "preferences-statusbar-bg-light")
if (self.state == NSOnState) {
image?.drawInRect(dirtyRect, fromRect: NSZeroRect, operation: NSCompositingOperation.CompositeSourceOver, fraction: 1.0, respectFlipped: true, hints: nil)
}
else {
image?.drawInRect(dirtyRect, fromRect: NSZeroRect, operation: NSCompositingOperation.CompositeSourceOver, fraction: 0.8, respectFlipped: true, hints: nil)
}
super.drawRect(dirtyRect)
}
可能跟画NSImage时的操作有关?
奇怪的是,如果我将鼠标悬停在视图上,它会正确绘制。
【问题讨论】:
标签: cocoa nsstring drawrect nsimage nsbutton