gpt4 book ai didi

macos - NSScrollView subview 的缩放

转载 作者:行者123 更新时间:2023-12-03 23:29:50 25 4
gpt4 key购买 nike

对于菜鸟问题​​表示歉意 - 来自 iOS 背景,我在 OSX 上遇到了一些困难。

好消息——我有一个 NSScrollView 和一个大的 NSView,因为它是 documentView。我一直在调整 contentView 的边界以有效地放大 documentView - 并且对于我在 drawRect(documentView 的)中所做的任何事情都运行良好

不太好的消息 - 我现在添加了另一个 NSView 作为大型 documentView 的子级,并希望它像在 iOS 领域一样简单地缩放 - 但它没有。如果有人能帮助填补我对这一切的理解中相当大的空白,我将非常感激

谢谢。

[更新] 自己修复了 - “问题”是启用了自动布局(布局约束)。一旦我禁用它们并适本地设置自动调整大小,那么一切都很好。我想我应该了解布局约束...

最佳答案

我知道这已经很老了,但我花了几天时间尝试使用其他人发布的各种解决方案来解决这个问题,但我只是使用以下方法实现了鼠标滚动缩放,所有这些解决方案都有基本问题。作为背景,我在 NSView 子类中使用 CALayers,背景中有一个大型 PDF 建筑布局,100 多个可拖动的 CALayer 对象在其上过度播放。

缩放是即时且平滑的,一切都完美缩放,没有像素化,这是我对所谓的“放大”的期待。我在这上面浪费了很多天。

  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)
}
}

关于macos - NSScrollView subview 的缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12694351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com