Я делаю изменения в текущем NSGraphicContext изнутри метода drawRect () NSView, и все работает нормально. Любые сделанные изменения сохраняются при последующих вызовах метода drawRect ().
Однако я хочу сделать изменения в текущем контексте из метода другого объекта. Этот метод действительно вызывается из метода DrawRect (). Но эти изменения не являются постоянными.
Код выглядит так:
class SomeView:NSView {
override func drawRect(dirtyRect: NSRect) {
// myAObject is an instance of a Class i create, and stored inside SomeView
// myAObject's exexcuteCode() method, makes changes to the current NSGraphicsContext
myAObjectIntance.executeCode()
// In subsequent calls of drawRect, as the user keeps drawing using the
// mouse, another object, say myBObject's executeCode() method, draws,
// lets say a rectangle.
myBObjectIntance.executeCode()
// Problem is, that any changes done to the current context by myAObjectIntance.executeCode()
// seem to be lost.
// If i change the context and draw inside the same method call, everything is OK.
// If changes and drawing are done by different objects, changes are lost.
}
}
Из обоих методов, myAObjectIntance.executeCode () и myBObjectIntance.executeCode (), я получаю текущий NSGraphicsContext используя такой код:
NSGraphicsContext.current!.compositeOperation = .copy
или
NSGraphicsContext.current!.compositeOperation = .clear
Я добавил небольшой проект, который меняет цвет переднего плана. Изменение цвета не сохраняется между последовательными вызовами drawRect (). NSGraphicsContextTest.zip