自动放大在NSScrollView中的作用是什么?

时间:2013-11-11 08:49:17

标签: objective-c nsscrollview coordinate-transformation magnification

我在IB中编写了一个NSScrollView并检查了allow magnification框。这实际上是做什么的?

这是我在Apples示例中发现的,其中实现了手动放大:

- (void)magnifyWithEvent:(NSEvent *)event {

    [resultsField setStringValue:

    [NSString stringWithFormat:@"Magnification value is %f", [event magnification]]];

    NSSize newSize;

    newSize.height = self.frame.size.height * ([event magnification] + 1.0);

    newSize.width = self.frame.size.width * ([event magnification] + 1.0);

    [self setFrameSize:newSize];

}

使用allow magnification也会调整视图中的所有内容,因此不能像上面那样设置框架大小。
这就像使用scaleUnitSquareToSize:来操纵坐标系一样吗?

1 个答案:

答案 0 :(得分:2)

我没有使用它,但缩放视图内容的旧方法是更改​​视图的边界,同时保持其框架的大小相同。这有效地改变了坐标系统以绘制更大的东西(以及视图之外的大多数东西)。

我的猜测是自动放大器会在触控板上侦听捏合/解锁事件,并在响应中向上/向下缩放边界。

查看文档,看起来这个复选框设置了-allowsMagnification属性。放大率似乎与改变边界具有相同的效果,但是是独立的。有一个放大属性和minMagnification和maxMagnification属性。因此,收缩会调整放大特性,从而导致更大的绘图。

我的猜测是在lockFocus中设置上下文转换矩阵时会考虑放大倍数。我希望他们也适当地更新了scaleUnitSquare和其他版本,但我认为这些并不是你的图纸最终需要的尺寸。