animateWithDuration不是动画UIButton

时间:2013-02-21 17:11:36

标签: ios objective-c core-animation nstimer

我在UIView上有一个类别,应该将UIButton从一个点移动到另一个点。它正在运行,但按钮根本不会移动。看起来动画很成功,但根本没有动作。

按钮由重复的NSTimer调用,该按钮被设置为动画按钮(每秒检查一次是否为真,如果是剩余的点 - ,当剩余点== 0动画时) 。还有一个定时器每0.01秒调用一次,可以对麦克风上的电平进行一些工作,但是如果我增加频率,它仍然无法工作。

我认为我的动画代码还可以 - 但有些东西阻碍了动画的正确显示。如果我在viewDidLoad中为它设置动画动画(虽然它从结束点开始并动画到我将按钮放在故事板中的位置),但是如果我在程序流中设置动画它不起作用。

该类别正确地指出了我的终点,并在5秒后“完成”。

类别:

@implementation UIView (Animation)
- (void) moveTo:(CGPoint)destination duration:(float)secs option:(UIViewAnimationOptions)option
{
    NSLog(@"moveTo Category. destination: %@ and duration %f", NSStringFromCGPoint(destination), secs);
    [UIView animateWithDuration:secs delay:0.0 options:option
                     animations:^{
                         self.frame = CGRectMake(destination.x,destination.y, self.frame.size.width, self.frame.size.height);
                         NSLog(@"self.frame: %@", NSStringFromCGRect(self.frame));
                     }
                     completion:^(BOOL finished){
                         NSLog(@"done");
                     }];
}
@end

动画代码:

[rewardAnimationButton moveTo:CGPointMake(100, 100) duration:5.0 option:0];

1 个答案:

答案 0 :(得分:3)

您是否关闭了XIB文件/故事板的自动布局?据说自动布局接管视图放置,并干扰动画。

您也可以尝试动画按钮的中心而不是框架。如果视图的变换不是标识,则frame属性是未定义的。