я, вероятно, пропустить что-то очевидное, но ...NSView с NSBezierPath не обновляется после изменения размера окна
У меня есть простой NSView:
class TestView : NSView {
override func drawRect(dirtyRect: NSRect) {
let path = NSBezierPath()
path.moveToPoint(NSPoint(x: 0 ,y: 0))
path.lineToPoint(NSPoint(x: frame.size.width, y: 0))
path.lineToPoint(NSPoint(x: frame.size.width, y: frame.size.height))
path.lineToPoint(NSPoint(x: 0 ,y: frame.size.height))
path.lineToPoint(NSPoint(x: 0 ,y: 0))
path.lineWidth = 1
path.stroke()
}
}
Это помещается подошву в окно. Контроллер имеет окно
func windowDidEndLiveResize(notification: NSNotification) {
var frame = textFrame
frame.size.height = window!.frame.size.height - 60
frame.size.width = window!.frame.size.width - 40
field.frame = frame
field.needsDisplay = true
}
где frame
является размер рамы на окна нагрузки и field
моя TestView
. Так что, когда я начинаю мое приложение будет рисовать рамку красиво, как и ожидалось:
Но при масштабировании вниз
оказывается, что представление не стирается и оставляет артефакты на окно. Это, наверное, нечто тривиальное, но в настоящее время я слепой.
Ничего себе. Я знал, что это просто. Я был уверен, что супервизор уже знал о needsDisplay. Очевидно, это не так. Благодаря :-) –