1

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

我试图从另一个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:' 未找到(返回类型默认为 'id')”

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

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

谢谢你

4

2 回答 2

1

正如警告所说,UIView 中不存在方法“+setAnimationTransition:forView:”。您正在寻找的方法是“ +setAnimationTransition:forView:cache: ”。但是,在文档中有一条注释说:

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

如果您不需要支持 iOS 3.x,我建议您按照 Apple 所说的去做,并为您的动画使用方法 'transitionWithView:duration:options:animations:completion:' :)

[编辑]

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

于 2012-06-04T13:21:44.183 回答
0

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

从 UIView 的参考资料:

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

所以添加cache:YEScache:NO

或者,正如我打字时提到的那样,使用transitionWithView:...

于 2012-06-04T13:24:55.163 回答