如何在 Cocoa 中创建平移和缩放 canvas(如 Photoshop)

How to create a pan and zoom canvas (like Photoshop) in Cocoa

我正在为 Cocoa 中的 Mac 开发一个非常简单的绘图应用程序,并尝试使用 NSScrollView 创建一个动态调整大小的绘图 canvas,但它似乎没有用。

我想要一个 NSView 当我四处滚动(平移)时它会变大,当我缩小时它也会变大。显然,我会为 canvas 设置最大大小以限制内存,但不知道从哪里开始。

有什么想法吗?另外,对 iOS 或 UIKit 解决方案有什么想法吗?我可以根据需要进行调整。

您似乎正在寻找使用 UIScrollViewNSScrollView 的教程! (最好在 Google 上完成)

要使用UIScrollView,您必须遵守UIScrollViewDelegate协议,然后实现所需的功能。您可以找到详细说明 here

使用 ScrollView 或 UIScrollView 需要在我滚动时增加它的大小,并且难以置信地减慢我的应用程序。我查看了使用平铺滚动视图,但这也只是创建了一个巨大的滚动视图。

我最后做的是创建一个 'canvas' 视图,然后用户可以对其进行操作。当他们想要缩放时,这个 'canvas' 只是简单地缩放以产生缩放的错觉,当他们想要在无限工作区周围平移时,canvas 只是移动以产生平移的错觉。

基本上,我是通过允许用户在有限的 NSView 中四处移动感兴趣的对象来创建无限 canvas 的幻觉,并且能够将其移出屏幕,并在他们需要。