如何在 NSScrollView 中强制重绘内容

Posted

技术标签:

【中文标题】如何在 NSScrollView 中强制重绘内容【英文标题】:how to force redraw contents inside a NSScrollView 【发布时间】:2011-08-04 08:12:00 【问题描述】:

我把 NSTextView + NSImageView + NSMatrix + NSTextView 放在一个 NSScrollView 中。我使用以下代码将此滚动视图滚动到顶部 -

NSPoint pointToScrollTo = NSMakePoint(0, NSMaxY([[singleScrollView documentView] frame]) - [[singleScrollView contentView] bounds].size.height);
[[singleScrollView contentView] scrollToPoint: pointToScrollTo];
[singleScrollView reflectScrolledClipView: [singleScrollView contentView]];

但问题是,当它完成滚动到顶部时,视图变得一团糟。这是一个屏幕截图 -

我试图强制重绘内容,但没有运气 -

[txtQTitle setNeedsDisplay:YES];
[viewOptions setNeedsDisplay:YES];
[singleScrollView setNeedsDisplay:YES];

有谁知道这是什么原因以及应该如何解决?

编辑 1 - 当我使用鼠标滚动来滚动视图时,singleScrollView 的某些部分会正常 .. 这是一个截图 -

【问题讨论】:

【参考方案1】:

试试[[yourScrollView contentView] setCopiesOnScroll:NO]。我想,它应该可以解决你的问题。

【讨论】:

以上是关于如何在 NSScrollView 中强制重绘内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Maps API 上强制重绘?

NSScrollView 滚动后在 Xcode 5 中显示问题

如何设置 NSScrollView 的内容大小?

如何强制重绘列表视图?

更改某些属性后如何强制重绘小部件?

如何在 NSScrollView 中控制 NSTableView 的绘制?