如何用自定义动画替换另一个UI元素?

时间:2012-06-28 13:45:10

标签: ios animation core-animation quartz-graphics

我想在自己的文档查看器中实现嵌套注释(如贴纸)。 首先,它应该是UITextView,但是当resignFirstResponder执行时,它应该只是一个小按钮。 主要问题是:如何制作动画? 我已经阅读过Apple的Quartz 2d编程指南,但它没有给我任何想法。 我没有要求准确或现成的解决方案:关键字,文章或文档的链接就足够了。 感谢您将来的回复。

2 个答案:

答案 0 :(得分:1)

您可以使用此方法

[UIView animateWithDuration: delay: options: animations: completion:];

因此,如果您希望淡入按钮并淡出文本字段,那么

//Starting properties
myButton.alpha = 0;
myTextField.alpha = 1;

//Do the animation
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{
    myButton.alpha = 1;
    myTextField.alpha = 0;   
} completion:^(BOOL finished) {
    if (finished) {
        NSLog(@"finished animating");
    }
}];

这将改变2个对象的不透明度,从0 - 1/1 - 0超过300ms

您可以通过大小,位置,不透明度等方式为许多属性设置动画。

答案 1 :(得分:0)

你可以这样做,就像Apple在QuickLook中两个不同元素之间淡出一样。您可以通过在Finder中选择的项目按 shift + space 来以慢动作方式查看效果。

动画基本上是帧变化的同时交叉淡入淡出。您应该将按钮和文本视图都渲染到图像中,并使用两个图像视图(仅在动画期间存在)执行动画,以便在帧变化时纵横比发生变化时拉伸图像。

你需要Core Animation将视图渲染成图像,但其余的图像只是帧和alpha /不透明动画,所以你应该能够使用UIView动画(如果Core Animation看起来很复杂)。虽然核心动画在调整动画时会给你一些更细粒度的控制。