Хорошо, это полная нелепость - я потратил на это несколько дней. И все лежащие в основе CALayers и изображения масштабируются в векторе - здесь нет пиксельного масштабирования растрового изображения. И это ослепительно быстро, без заиканий или колебаний. Для меня масштабирование и увеличение - это две разные вещи, поэтому я даже не думал об этом раньше - и я уверен, что сделал и получил некоторый пиксельный беспорядок - мое плохое. Надеюсь, это сэкономит время кому-то еще.
К вашему сведению, у меня есть большой PDF-файл, отрендеренный в фоновом CALayer, а затем 100+ перетаскиваемых объектов, каждый в своих CALayers, сверх этого. Теперь все масштабируется, масштабируется и перемещается так же плавно, как и любой из лучших графических пакетов, например Affinity Designer et c.
Все еще в шоке и чего-то жду, go все сумасшедшие.
override func scrollWheel(with event: NSEvent) {
guard event.modifierFlags.contains(.option) else {
super.scrollWheel(with: event)
return
}
let dy = event.deltaY
if dy != 0.0 {
let magnification = self.scrollView.magnification + dy/30
let point = self.scrollView.contentView.convert(event.locationInWindow, from: nil)
self.scrollView.setMagnification(magnification, centeredAt: point)
}
}