我有一个 UIView 用于绘制一组项目中的任何一个。也就是说,我的一个 UIView 子类可以被告知绘制一个正方形、圆形或三角形。

我想要一个过渡来翻转该视图,以便 UIView 在中途点绘制不同的形状,所以看起来我正在过渡到不同的视图,但实际上我只是在重新绘制单个视图过渡的中间点。

有没有办法做到这一点,而不需要使用两个不同的 UIView 并在动画块中交换它们?对我来说,重新调整我必须使用交换机制的东西会有点笨拙。

理想情况下,我需要的只是一些回调或通知,表明动画处于中间点,然后我可以使用新形状重新绘制视图。

谢谢你的帮助!

有帮助吗?

解决方案

即使您确实知道翻转动画的中点,我也不相信重新绘制动画中间视图的内容会做任何事情。我认为视图层的内容在动画开始时缓存,并且不会随着动画的进行而改变。此外,如果您的视图后面没有其他视图,则在动画结束时您的视图最终会从左到右反转。

如果您希望将其作为自定义动画,您可以使用 Mike Lee 之类的工具将其分成两半 狐猴翻转实现 我在其中描述的 这个答案. 。动画的前半部分结束后,您可以重新绘制视图的内容并完成动画,最后回到开始的地方。

然而,对我来说,不根据转换而切换视图似乎更笨拙。这肯定需要更多的代码来完成。

其他提示

您可以尝试做水木清华这样的。例如,您animationDuration属性设置为2.0F。所以,中途点为1秒,因此可以使用

  

[自performSelector:@selector(yourCallbackMethod)withObject:无afterDelay:1.0F];

我知道你可以做到这一点的唯一方法是使用核心动画重新创建动画,然后使用监视定时器在表示层动画。有没有在核心动画层提供志愿所以你必须明确地监视它。

在换句话说,它可能不值得。我建议你想以不同的方式来解决问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top