cocoa - 如何解释触控板捏合手势来缩放 IKImageBrowserView

标签 cocoa macos imagekit ikimagebrowserview

我有一个 IKImageBrowserView,我希望能够在最近的 Mac 笔记本电脑上使用多点触控触控板进行捏合缩放。

Cocoa 事件处理指南,在 Handling Gesture Events 部分说:

The magnification accessor method returns a floating-point (CGFloat) value representing a factor of magnification

..然后显示通过将高度和宽度乘以放大率 + 1.0 来调整 View 大小的代码。

这似乎不是缩放 IKImageBrowserView 的正确方法,其 zoomValue 属性被限制在 0.0 和 1.0 之间。

那么,有谁知道如何解释 -[NSResponder magnifyWithEvent:] 中的事件来缩放 IKImageBrowserView

最佳答案

这就是我所做的,在 Snow Leopard 上运行得非常好:

在 10.6 中,NSEvent 具有“放大”方法,该方法将返回正确的数量。您所要做的就是将其添加到旧值,例如[imageBrowser ZoomValue]+[event magnification]

- (void)magnifyWithEvent:(NSEvent *)event
{
    if ([event magnification] > 0)
    {
        if ([self zoomValue] < 1)
        {
            [self setZoomValue:[self zoomValue] + [event magnification]];
        }
    }
    else if ([event magnification] < 0)
    {
        if ([self zoomValue] + [event magnification] > 0.45)
        {
            [self setZoomValue:[self zoomValue] + [event magnification]];
        }
        else
        {
            [self setZoomValue:0.45];
        }
    }
}

这里的 self 是一个 IKImageBrowserView 子类。我在这里设置了一个阈值,以便 zoomValue 不能小于 0.45,但这正是我喜欢的方式。

最诚挚的问候, 马蒂亚斯,永恒 Storm 软件

关于cocoa - 如何解释触控板捏合手势来缩放 IKImageBrowserView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807590/

相关文章:

ios - 来自苹果评论的崩溃日志

python - Imagekit - 删除原始图像后未删除缓存图像

node.js - 从运行express-graphql的 Node 服务器发送GraphQLUpload到imagekit.io

ios - NSCache - 标记对象不可移除

objective-c - 以编程方式将 NSTableView 内的 NSButton 位置设置为居中

objective-c - 用于桌面应用程序的 Objective C Websocket

ios - 使用终端构建 iOS 应用程序

mysql - 错误!服务器退出而不更新 PID 文件 (/usr/local/mysql/data/Mac.local.pid)

macos - 如何在 osx 上模拟 cp 和 mv --parent

cocoa - IKImageBrowserView:如何显示每个项目的工具提示?