代码之家  ›  专栏  ›  技术社区  ›  Nader Eloshaiker

当动画将对象移到屏幕外时,如何使对象保持在滚动视图的视图中

  •  0
  • Nader Eloshaiker  · 技术社区  · 15 年前

    美好的一天;

    我有一个uiImageView,它围绕一个大的uiView制作动画。uiView包含在uiScrollView中。

    现在,在uiview中的uiImageView的小运动动画中,如果它通过某个阈值保持(接近屏幕边缘),我将手动滚动uiScrollView以重新居中uiImageView。代码是同步的,因为我对uiImageView设置动画,然后滚动到uiScrollView中的点。

    我遇到的问题是,当有一个很长的动作动画时,整个滚动过程都很困难,我会得到很多跳过的帧。我不确定,我认为这是因为我的同步代码,我认为我需要一种方法来同时执行滚动和动画,但我不知道如何做。

    是否有一种方法可以使滚动视图始终监听uiImageView所在的位置,并在它通过阈值时将其居中,即使在执行动画的过程中也是如此?

    顺便说一下,我已经禁止用户滚动uiscrollview。

    事先谢谢。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Nader Eloshaiker    15 年前

    对不起,我把这个留了这么久了,我其实很久以前就解决了这个问题,但是忘记了把我的解决方案贴出来。

    基本上,将uiScrollView传递给动画对象(层或视图)。动画对象将自己作为动画的代理,并实现方法和“AnimationDidStart:(CAAnimation*)TheAnimation”。

    如果在动画对象和uiScrollView中保留目标位置,则可以在“animationDidStart”方法中计算将ScrollView移动到何处。

    请注意,如果您的ScollView已缩放,则必须缩放内容偏移量和滚动视图中的目标位置。(年轻球员的陷阱)