Fra*_*irs 7 macos cocoa imagekit ikimagebrowserview
我IKImageBrowserView想要能够在最近的Mac笔记本电脑上使用多点触控板进行双指缩放.
"可可事件处理指南"中的处理手势事件部分说:
放大访问器方法返回表示放大因子的浮点(CGFloat)值
..继续显示通过乘以高度和宽度来调整视图大小的代码magnification + 1.0.
这似乎不是缩放的正确方法IKImageBrowserView,其zoomValue属性被钳制在0.0和1.0之间.
那么,有没有人知道如何解释事件-[NSResponder magnifyWithEvent:]进行缩放IKImageBrowserView?
小智 15
这就是我在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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
self这里是一个IKImageBrowserView子类.我这里有一个阈值,所以zoomValue不能小于0.45,但这就是我喜欢的方式.
最好的问候,马蒂亚斯,永恒风暴软件
如果将事件放大率添加到缩放系数,则根据当前缩放系数,相同的事件将不会产生相同的效果。将 的放大率添加0.1到 的缩放因子1将放大10%,但如果缩放因子是0.1,则添加0.1将使缩放倍增。
乘以缩放因子的结果magnification + 1.0会更加一致。
我更喜欢将缩放系数乘以std::exp(magnification),因为这似乎是一个更自然的解决方案。放大倍数-n将缩小与放大倍数完全相同的量n。
| 归档时间: |
|
| 查看次数: |
4008 次 |
| 最近记录: |