我在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:
来操纵坐标系一样吗?
答案 0 :(得分:2)
我没有使用它,但缩放视图内容的旧方法是更改视图的边界,同时保持其框架的大小相同。这有效地改变了坐标系统以绘制更大的东西(以及视图之外的大多数东西)。
我的猜测是自动放大器会在触控板上侦听捏合/解锁事件,并在响应中向上/向下缩放边界。
查看文档,看起来这个复选框设置了-allowsMagnification属性。放大率似乎与改变边界具有相同的效果,但是是独立的。有一个放大属性和minMagnification和maxMagnification属性。因此,收缩会调整放大特性,从而导致更大的绘图。
我的猜测是在lockFocus中设置上下文转换矩阵时会考虑放大倍数。我希望他们也适当地更新了scaleUnitSquare和其他版本,但我认为这些并不是你的图纸最终需要的尺寸。