1

我有一个 NSView 作为 NSScrollView 的 documentView。我还有一个 NSImageView 作为 NSView 的子视图。图像动态改变大小,因此滚动条在不同时间变为活动/不活动。图像更改后,我想滚动到图像上的某个点。在 NSView 的 drawRect: 方法中,我调用 [[myScrollView contentView] scrollToPoint: myPoint];

滚动条会更新,图像会按我的意愿显示,但是一旦滚动图像,就会出现双图像或图像的一部分被截断。任何帮助,将不胜感激。谢谢你。

4

1 回答 1

3

NSScrollView听起来您可能想在 Interface Builder 中或以编程方式关闭“滚动时复制”行为选项。

来自Mac OS X 的滚动视图编程指南:滚动的工作原理

该类通过该方法NSClipView提供低级滚动支持 。scrollToPoint:此方法转换内容视图边界矩形的原点,并通过复制尽可能多的渲染文档视图来优化重新显示,只要求文档视图绘制新暴露的区域。这通常会提高滚动性能,但可能并不总是合适的。您可以使用作为参数 传递的NSClipView方法来关闭此行为。如果您确实保持滚动复制处于活动状态,请确保使用 方法method 而不是.setCopiesOnScroll:NONSViewscrollPoint:translateOriginToPoint:

于 2012-05-02T17:24:14.397 回答