【问题标题】:How to interpret trackpad pinch gestures to zoom IKImageBrowserView如何解释触控板捏合手势以缩放 IKImageBrowserView
【发布时间】:2013-02-08 17:50:59
【问题描述】:

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

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

放大访问器方法返回一个浮点 (CGFloat) 值,表示放大系数

..然后继续显示通过将高度和宽度乘以magnification + 1.0 来调整视图大小的代码。

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

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

【问题讨论】:

    标签: cocoa macos imagekit ikimagebrowserview


    【解决方案1】:

    这就是我所做的,在 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,但这正是我喜欢的方式。

    最好的问候, Matthias,永恒风暴软件

    【讨论】:

      【解决方案2】:

      如果您将事件放大倍数添加到您的缩放系数,则同一事件将不会产生相同的效果,具体取决于当前的缩放系数。将0.1 的放大倍数添加到1 的缩放系数将缩放10%,但如果缩放系数为0.1,添加0.1 将使您的缩放倍数。

      缩放系数乘以magnification + 1.0的结果会更加一致。

      我更喜欢将缩放系数乘以std::exp(magnification),因为这似乎是一个更自然的解决方案。 -n 的放大倍数将与n 的放大倍数完全相同。

      【讨论】:

        猜你喜欢
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        相关资源
        最近更新 更多