Cocoa NSScrollView和NSImage上的ScrollToPoint
我有一个NSView作为NSScrollView的documentView。我还有一个NSImageView作为NSView的子视图。图像会动态更改大小,以便滚动条在不同时间处于活动/非活动状态。一旦图像改变,我想滚动到图像上的某个点。在NSView的drawRect:方法中,我调用 [[myScrollView contentView]滚动点:myPoint]Cocoa NSScrollView和NSImage上的ScrollToPoint,cocoa,nsimage,nsscrollview,Cocoa,Nsimage,Nsscrollview,我有一个NSView作为NSScrollView的documentView。我还有一个NSImageView作为NSView的子视图。图像会动态更改大小,以便滚动条在不同时间处于活动/非活动状态。一旦图像改变,我想滚动到图像上的某个点。在NSView的drawRect:方法中,我调用 [[myScrollView contentView]滚动点:myPoint] 滚动条会更新,图像会按我的意愿显示,但一旦图像被滚动,就会出现一个双图像或图像的一部分被切断。任何帮助都将不胜感激。谢谢。听起来您可能
滚动条会更新,图像会按我的意愿显示,但一旦图像被滚动,就会出现一个双图像或图像的一部分被切断。任何帮助都将不胜感激。谢谢。听起来您可能想在Interface Builder中或以编程方式关闭
NSScrollView
的“滚动复制”行为选项
发件人:
NSClipView
类通过
scrollToPoint:
方法。此方法将转换对象的原点
内容视图的边框,并通过复制来优化重新显示
大部分呈现的文档视图仍然可见,只需询问
用于绘制新暴露区域的文档视图。这通常会有所改善
滚动性能,但可能并不总是合适的。你可以转身
使用NSClipView
方法setCopiesOnScroll:
将NO
作为参数传递。如果您确实保持“滚动复制”处于活动状态,请
确保使用NSView
方法滚动点:
方法,而不是翻译原点:
为什么要在
-drawRect:
中滚动?除了画图,你不应该做任何事情,而且绝对不应该做任何调用任何-setNeedsDisplay…
方法的事情。我下一次尝试解决这个问题的是将图像和文档视图框架设置在-drawRect方法之外。我试试看你是对的。当我将setFrame、setOrigin、scrollToPoint等方法移出-drawRect时,一切都很顺利。非常感谢你!尝试在IB中设置此选项,效果不错。将尝试这两种方法的组合,并在-drawRect方法之外设置documentView框架。非常感谢。