我有一个UIView
实例,我正在使用CAKeyframeAnimation
进行动画处理。这是一个循环动画,并将不断运动。但是,我需要允许用户与物品进行互动(确切地说,响应点击)。由于CoreAnimation仅移动表示层而不移动模型,因此我无法使用UIButton
实例来获取touchUpInside
事件。处理动画UIView/CALayer触摸的最佳模式?
考虑以下基本示例布局:
我使用了触摸事件的蓝色框通过重写touchesEnded:withEvent:
方法上UIView
子类。然后,我通过NSNotification
(我真的不想引入很多耦合来处理此事件)将该事件冒泡给包含的视图控制器,然后在红色框中执行hitTest:
动画。
所有这一切似乎都相当冒险,只能触摸动画UIView
。 处理动画UIView
/CALayer
实例触摸的最佳模式是什么?
您是否需要使用CA? CA对于流畅的动画来说是最好的选择,因为它非常轻便,而且轻量级,因为它没有全部的事件处理功能(部分属实)。如果你以某种方式向它添加事件处理,那么你可能会破坏平滑的GPU能力。我不确定有没有办法解决这个问题。它需要多么流畅?你可能想用其他一些动画技术来动画,这些动画技术实际上是用CPU来移动模型的。只是想和你大声说话。 – Vinnie 2012-02-16 05:09:54
@Vinnie - 问题是这个例子是一个非常简单的动画。真正的问题实际上涉及若干关键帧,以便沿着路径对视图进行动画处理,并在沿路径移动时进行一些旋转。动画也需要重复ad-infinitum,所以使用基于UIView块实际上看起来不太合适。 – 2012-02-16 05:30:58