1

我在 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];
4

1 回答 1

3

您是否关闭了 XIB 文件/情节提要的自动布局?据说自动布局会接管视图放置,并干扰动画。

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

于 2013-02-22T01:34:23.277 回答