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

Ios 如何用自定义动画替换一个UI元素?,ios,animation,core-animation,quartz-graphics,Ios,Animation,Core Animation,Quartz Graphics,我想在自己的文档查看器中实现嵌套注释(如标签)。 起初,它应该是UITextView,但当执行resignFirstResponder时,它应该只是一个小按钮。 主要问题是:如何设置动画? 我读过苹果公司的Quartz 2d编程指南,但它没有给我任何想法。 我不要求精确或现成的解决方案:关键字、文章链接或文档就足够了。 感谢您以后的回复。您可以采用与苹果在QuickLook中的两种不同元素之间淡出相同的方式。通过按住shift+space键并在Finder中选择一个项目,您可以在慢动作中看到效果

我想在自己的文档查看器中实现嵌套注释(如标签)。 起初,它应该是
UITextView
,但当执行
resignFirstResponder
时,它应该只是一个小按钮。 主要问题是:如何设置动画? 我读过苹果公司的Quartz 2d编程指南,但它没有给我任何想法。 我不要求精确或现成的解决方案:关键字、文章链接或文档就足够了。
感谢您以后的回复。

您可以采用与苹果在QuickLook中的两种不同元素之间淡出相同的方式。通过按住shift+space键并在Finder中选择一个项目,您可以在慢动作中看到效果

动画基本上是在帧更改的同时进行交叉淡入淡出。您可能应该将按钮和文本视图渲染为图像,并使用两个图像视图(仅在动画期间存在)执行动画,以便能够在帧更改时随着纵横比的更改拉伸图像


您将需要核心动画将视图渲染为图像,但其余图像仅为帧和alpha/不透明度动画,因此您应该能够使用UIView动画来执行这些操作(如果核心动画对您来说似乎很复杂)。尽管核心动画在调整动画时会给你一些更细粒度的控制

您可以使用这种方法

[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");
    }
}];
这将在300毫秒内将两个对象的不透明度从0-1/1-0更改


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

交叉淡入将是一个选项。问题是,我想尝试用手制作这样的动画。通过例如设置控件(UIView)的alpha值更改的动画来设置交叉淡入的错误是什么?是的,我已经阅读了有关交叉淡入的内容。但是我想要一些不那么静止的东西。例如,就像从相册中删除照片一样。谢谢,但我知道如何制作如此简单的动画。我不知道如何创建自定义动画。@folex请用更多的词描述一下您所说的自定义动画。我是指手工制作的动画。例如,当您指定每个转换或类似的内容时。我无法更正式地描述它,因为如果可以的话,我会用谷歌搜索它:)也许没有办法这么做?无论如何,在阅读《核心动画编程指南》之后,我会尝试找出答案。@folex您应该首先检查该指南,因为几乎所有标准转换都可以使用核心动画制作动画。当事情变得更加复杂时,您可能最终不得不使用预渲染帧动画(例如,使用UIImageView的动画功能)。