Я использую drawRect
, чтобы нарисовать NSString внутри пользовательского представления, которое является подзоном NSButton
. drawRect
NSButton также рисует NSImage
, что представляется проблемой. Если я удалю код drawRect
для NSImage
, его больше не будет (но тогда у меня нет фона).Рисование артефактов при рисовании NSString в NSButton
Вот пользовательский вид 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)
}
Вот NSButton
drawRect
:
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
?
Странно то, что если я навижу над видом, он рисует правильно.