Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSScrollView和NSImage上的ScrollToPoint_Cocoa_Nsimage_Nsscrollview - Fatal编程技术网

Cocoa NSScrollView和NSImage上的ScrollToPoint

Cocoa NSScrollView和NSImage上的ScrollToPoint,cocoa,nsimage,nsscrollview,Cocoa,Nsimage,Nsscrollview,我有一个NSView作为NSScrollView的documentView。我还有一个NSImageView作为NSView的子视图。图像会动态更改大小,以便滚动条在不同时间处于活动/非活动状态。一旦图像改变,我想滚动到图像上的某个点。在NSView的drawRect:方法中,我调用 [[myScrollView contentView]滚动点:myPoint] 滚动条会更新,图像会按我的意愿显示,但一旦图像被滚动,就会出现一个双图像或图像的一部分被切断。任何帮助都将不胜感激。谢谢。听起来您可能

我有一个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框架。非常感谢。