【问题标题】:OS X WebView scrollbar redrawing/flickering/flashing issueOS X WebView 滚动条重绘/闪烁/闪烁问题
【发布时间】:2015-02-01 00:18:05
【问题描述】:

我在 OS X Yosemite 上遇到了 WebView 滚动条的问题。 WebView 在 XIB 文件中设置,保持默认设置。然后加载内容:

[self.webView.mainFrame loadHTMLString:html baseURL:nil];

但在滚动时,我看到滚动条出现重绘/闪烁/闪烁问题:example video。 (所有类型的内容都会发生这种情况,我只是用这个随机数据记录的)

【问题讨论】:

标签: macos cocoa webkit scrollbar


【解决方案1】:

这个很难弄清楚,但它是这样的:首先创建了一个只有WebView 的新项目,看看我是否可以重现它。我无法在那里复制它。

我切换回我的项目并将麻烦的 xib 替换为仅包含 WebView 的新 xib。我再次无法重现该问题。

接下来是更耗时的任务,即在新的 xib 中重新创建完整的 UI。这个 xib 也无法重现问题。问题解决了!

但是是什么引发了问题?盯着两个xib的diff看了一会儿后,我注意到了一点:

<customView alphaValue="0.99999999999999989" translatesAutoresizingMaskIntoConstraints="NO" id="eEn-AF-z0I">

界面生成器仍然在Appearance 部分显示Alpha1。仅将其更改为其他内容并返回1 修复了xib:

<customView translatesAutoresizingMaskIntoConstraints="NO" id="eEn-AF-z0I">

我仍然不确定是什么改变了这个值,但至少这解决了我的问题。同样有意义的是,与图层相关的属性会导致此重绘问题。

不支持层支持的 WebView。来自 Leopard 发行说明:

AppKit 和 Mac OS X 的其他 Cocoa 框架提供的大多数标准视图和控件都能够在 Leopard 中以层支持模式运行,但某些专用视图除外,例如 WebKit WebViews 和 Quartz Composer QCViews,它们的使用目前不支持 layer-backed 模式。

http://developer.apple.com/mac/library/releasenotes/cocoa/AppKitOlderNotes.html#Animation - “新视图动画工具和支持图层的视图绘图”部分的最后一段

【讨论】:

    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-03-10
    相关资源
    最近更新 更多