代码之家  ›  专栏  ›  技术社区  ›  Tricky

滚动UIScrollView时,CADisplayLink停止更新

  •  16
  • Tricky  · 技术社区  · 14 年前

    标题是不言自明的,但我有一些动画是在一个循环由CADisplayLink触发完成。但是,只要滚动添加到视图层次结构中的UIScrollView,动画就会立即停止,直到滚动完全停止并停止时才再次返回。。。。

    8 回复  |  直到 14 年前
        1
  •  6
  •   Steven Canfield    14 年前

    运行显示链接(使用 -addToRunLoop:forMode:

        2
  •  30
  •   nornagon    14 年前

    您还可以通过使用 NSRunLoopCommonModes 而不是 NSDefaultRunLoopModes :

    [displayLink addToRunLoop:[NSRunLoop currentRunLoop]
                      forMode:NSRunLoopCommonModes];
    
        3
  •  7
  •   Community Ramakrishna.p    7 年前
        4
  •  4
  •   Community Ramakrishna.p    7 年前

    Animation in OpenGL ES view freezes when UIScrollView is dragged on iPhone

    这允许您使用“nsrunlopopCommonModes”,并避免在握住手指而不滚动时OpenGL冻结。

        5
  •  3
  •   ooOlly    7 年前

    实际上,CADisplayLink支持多个RunloopMode。 试试这个:

        [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:UITrackingRunLoopMode];
        [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    
        6
  •  2
  •   Doug    14 年前

    nsrunlopCommonModes似乎破坏了uiscrollview的弹性和连续性。

        7
  •  1
  •   Doug    14 年前

    我发现如果我将帧间隔设置为2而不是1(每秒30帧),那么一切都正常。所以我要做的是当我的popover出现时将其设置为2,当它关闭时将其重置为1。

        8
  •  1
  •   Maurizio    12 年前

    我们通过更改 frameInterval

    帧间隔 显示前必须经过的帧数 链接再次通知目标。

    值为1,这将导致应用程序在 显示的刷新率。如果该值设置为更大的值 本机刷新率。例如,将间隔设置为2个原因 显示链接每隔一帧触发一次,提供半帧 速率。

    程序错误。