我在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:来操纵坐标系呢?
发布于 2014-04-10 09:55:33
我没有使用它,但是缩放视图内容的旧方法是改变视图的边界,同时保持它的帧大小相同。这就有效地改变了坐标系来绘制更大的东西(以及视图之外的大多数东西)。
我的猜测是,自动放大镜会监听触控板上的夹点/解压事件,并根据响应缩放边界。
查看文档,看起来这个复选框设置了-allowsMagnification属性。放大率似乎与改变界限具有相同的效果,但是独立的。有一个放大属性以及minMagnification和maxMagnification属性。因此,缩孔将调整放大特性,这反过来又会导致更大的绘图。
我的猜测是,在lockFocus中设置上下文转换矩阵时,只考虑了放大率。我希望他们也更新了scaleUnitSquare和其他适当的,但这些并不是真正需要你的图纸,最终达到适当的大小,我认为。
https://stackoverflow.com/questions/19902188
复制相似问题