【问题标题】:NSScrollView as subview of layer-backed view bug?NSScrollView 作为图层支持的视图错误的子视图?
【发布时间】:2011-05-02 17:52:31
【问题描述】:

当我将 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 时,我在调整大小时看到了相同的抖动。

知道发生了什么吗?

【问题讨论】:

    标签: cocoa core-animation calayer nsscrollview


    【解决方案1】:

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

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

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

    【讨论】:

    • 知道这是一个已知问题会很有帮助。这有点令人惊讶。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多