我正在尝试按下索引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中创建分段控件。
谢谢
答案 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:YES
或cache:NO
或者,正如我输入的那样,使用transitionWithView:...