【问题标题】:UIWebView: Tracking screen updates (dirty regions)UIWebView:跟踪屏幕更新(脏区)
【发布时间】:2011-08-26 08:54:29
【问题描述】:

我正在尝试检测 UIWebView 中发生的动画和其他屏幕更新。我想获取自上次刷新以来已修改的 UIWebView 中区域的矩形。

我认为我真正在寻找的是一种方法来“捕获”UIWebView 对 setNeedsDisplayInRect 的调用。有没有办法做到这一点?我能否以某种方式子类化 UIWebView 的底层 CALayer 对象,让我能够在这些调用从 UIWebView 传入时捕获它们?

【问题讨论】:

  • 只是一个更新:我尝试使用一个 Objective C 类别 (@implementation CALayer (MyCALayer)) 来捕获从 UIWebView 到其 CALayer 的调用。我收到了调用,包括 setNeedsDisplayInRect,但看起来无法处理调用,然后将它们中继到原始 CALayer 对象。我错过了什么?肯定有办法做到这一点?
  • 我也想知道这是否可能!
  • 我真的需要一个答案。

标签: iphone ios uiview uiwebview calayer


【解决方案1】:

使用 Objective-C 类别 (@implementation CALayer (MyCALayer)) - 就像您已经根据更新所做的那样 - 捕获从 UIWebView 到 CALayer 的调用。

然后,使用 Method Swizzling 将您的类别覆盖传递给原始 CALayer 对象。

【讨论】:

  • 这个问题是你对每个 CALayer 都这样做。 UIWebView 的层可以用+ (Class)layerClass 覆盖。但实际更改的图层位于私有子视图中。
【解决方案2】:

没有好的方法可以做到这一点。您可以尝试抓取 UIWebView 的 CALayer 的快照并将其与之前的快照进行比较,但我在获取 UIWebView 的可靠快照时遇到了很多麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多