UIS隔离控件动画/翻译



当按下索引 0 时,我正在尝试垂直翻译分段控件,以便UITextView 可以出现在它的位置。我有UITextView的动画工作。

我尝试从另一个堆栈溢出线程实现以下代码。随着btnMyButton被替换为mySegControl。

btnMyButton.frame = CGRectMake(oldx,oldy,width,height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:btnMyButton];
[UIView setAnimationDuration:0.3];  
btnMyButton.frame = CGRectMake(newx, newy, width, height);
[UIView commitAnimations];

更改时, [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:presentingComplaintSegCtrl];

发出以下警告:"语义问题 类方法'+setAnimationTransition:forView:'未找到(返回类型默认为'id')"

有没有更好的方法来解决这个问题?

注意:我正在 XIB 中创建分段控件。

谢谢

正如警告所说,UIView 中不存在方法"+setAnimationTransition:forView:"。您要查找的方法是"+setAnimationTransition:forView:cache:"。但是,在文档中有一个注释说:

不建议在 iOS 4.0 及更高版本中使用此方法。您应该改用过渡视图:持续时间:选项:动画:完成:方法来执行过渡。

如果您不需要支持iOS 3.x,我建议您按照Apple所说的进行操作,并使用"transitionWithView:duration:options:animations:complete:"方法进行动画:)

[编辑]

嘿@Ríomhaire,再次阅读您的问题...对于您的示例,最好只在UIView中使用animateWithDuration:animations:方法。为要在块内进行动画处理的更改编写代码,并将其作为参数传递给此方法。以下是一些关于块的文档,以备不时之需:http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/_index.html

您正在寻找+setAnimationTransition:forView:cache:

来自UIView的参考:

缓存 如果是,则视图的前后图像渲染一次 并用于创建动画中的帧。缓存可以改进 性能,但如果将此参数设置为 YES,则不得更新 过渡期间的视图或其子视图。更新视图和 其子视图可能会干扰缓存行为并导致 查看要错误呈现的内容(或位于错误的位置) 在动画期间。您必须等到过渡结束 更新视图。如果为 否,则必须更新视图及其内容 过渡动画的每一帧,这可能会明显影响 帧速率。

所以添加cache:YEScache:NO

或者,正如我键入此内容时提到的 palpoms,请使用transitionWithView:...

最新更新