4

当我将 NSScrollView 设为 layer-backed view 的子视图时(例如,通过从 IB 中选择 NSTextView 或 NSTableView),我在滚动视图的文档视图中看到了奇怪的绘图行为。

为了说明,我在一个窗口中创建了一个带有 NSTextView 的简单项目。我写的唯一代码是为窗口的内容视图打开图层支持:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[self.window contentView] setWantsLayer:YES];
}

这是我在 textview 中输入时的结果。红色下划线没有正确排列:

http://mowglii.com/random/screenshot.png

此外,当我调整 textview 的大小时,文本和下划线抖动很多。当我使用 tableview(在滚动视图内)而不是 textview 时,我在调整大小时看到了相同的抖动。

知道发生了什么吗?

4

1 回答 1

4

NSScrollView 在嵌入到 layer-backed view 时确实行为不端。

需要一些严重的技巧来为包含滚动视图的视图设置动画。您可以尝试仅在需要动画时打开图层支持。然后,您需要强制绘图,以免以空层结束。

但是,通常,您需要深入了解技巧的背后。即:保持图层支持关闭。将视图绘制成图像,在启用图层支持的覆盖视图中显示该图像。将该视图动画化为最终状态的图像。然后移除覆盖视图以显示下面的实际最终状态。

于 2011-05-02T18:59:32.030 回答