У меня есть полупрозрачный (альфа = 0,4) NSView, который содержит другие NSView. Эти подпредставления используют mouseDown и mouseDragged, чтобы изменять свои позиции (устанавливая новые кадры), когда они перетаскиваются. Тем не менее, кажется, что всякий раз, когда виды перемещаются, они оставляют силуэт (см. Рисунок ниже) своего исходного положения. Я смог предотвратить это, изменяя непрозрачность фона (и затем возвращая его обратно) каждый цикл рисования, но это значительно замедляет вычисления при рисовании, как и ожидалось.
Вот изображение (яздесь довольно новое, поэтому не могу добавить изображение прямо сейчас): силуэт движения gif
Любое понимание того, что может происходить и как это исправить, будет высоко оценено.
Спасибо!
РЕДАКТИРОВАТЬ
По запросу, вот соответствующий код. Все перемещаемые NSView - это DraggableView:
class DraggableView: NSView {
var firstPoint = CGPoint()
override func mouseDown(with event: NSEvent) {
firstPoint = (self.window?.contentView?.convert(event.locationInWindow, to: self))!
}
override func mouseDragged(with event: NSEvent) {
let newPoint = (self.window?.contentView?.convert(event.locationInWindow, to: self))!
let offset = NSPoint(x: newPoint.x - firstPoint.x, y: newPoint.y - firstPoint.y)
let origin = self.frame.origin
let size = self.frame.size
self.frame = NSRect(x: origin.x + offset.x, y: origin.y + offset.y, width: size.width, height: size.height)
}
}