分段控制动画/翻译

时间:2012-06-04 13:03:08

标签: objective-c ios ios5 uisegmentedcontrol uianimation

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

我试图从this其他stackoverflow线程实现以下代码。用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:'not found(返回类型默认为'id')“

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

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

谢谢

2 个答案:

答案 0 :(得分:1)

如警告所示,UIView中不存在'+ setAnimationTransition:forView:'方法。您要查找的方法是“+setAnimationTransition:forView:cache:”。但是,在文档中有一条说明:

  

在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用transitionWithView:duration:options:animations:completion:方法来执行转换。

如果您不需要支持iOS 3.x,我会建议您像Apple所说的那样使用方法'transitionWithView:duration:options:animations:completion:'for your animation:)

<强> [编辑]

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

答案 1 :(得分:0)

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

来自UIView的参考:

  

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

所以添加cache:YEScache:NO

或者,正如我输入的那样,使用transitionWithView:...