2009-11-21 49 views
0

美好的一天;如何在动画将对象移出屏幕时保留滚动视图中的对象

我有一个UIImageView,我围绕一个大的UIView动画。 UIView包含在UIScrollView中。现在,在UIView内的UIImageView的小动作动画中,如果它通过了一定的阈值(靠近屏幕边缘),我将手动滚动UIScrollView以重新对UIImageView进行中心对齐。该代码是同步的,我为UIImageView设置了动画,然后滚动到指向UIScrollView。

我遇到问题的时候,有一个很长的移动动画,整个滚动过程挣扎,我得到了很多跳过的帧。我不确定,我认为这是由于我的同步代码,我相信我需要一种方法来同时执行滚动和动画,但我不知道该怎么做。

有没有办法让scrollview在任何时候都能听到UIImageView的位置,并且当它通过阈值时居中,即使在执行动画的时候?

顺便说一下,我已禁用用户滚动UIScrollView。

在此先感谢。

+0

好吧,这是一个长期的,只是一个疯狂的想法,我没有尝试过自己,所以我不会提交它作为答案:如何保持UIImageView静止和移动它后面的UIView呢?你可能可以使用转换来翻译或缩放你的UIView,并同时转换滚动视图? – mahboudz 2009-11-22 06:46:49

+0

这是一个可能的解决方案,但是想法是允许UIImageView移动并且IUView只会在图像太靠近边缘并重新居中时才会滚动。就可玩性而言,我觉得这个效果更好。你的建议(尽可能聪明),我认为不会觉得正确。 – 2009-11-22 07:36:58

回答

0

对不起,我已经离开了这么长时间,我很久以前解决了这个问题,但忘了发布我的解决方案。

基本上,将UIScrollview传递给动画对象(图层或视图)。动画对象将自己作为动画的委托并实现methond“animationDidStart:(CAAnimation *)theAnimation”。

如果您在动画对象和UIScrollView中保留目标位置,则可以计算“animationDidStart”方法中移动滚动视图的位置。

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

相关问题