1

代码非常基本:

UIImageView *testView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
[self.view addSubview:testView];
[testView setImage:[UIImage imageNamed:@"button.png"]];
[UIView animateWithDuration:100
                 animations:^{testView.center =  CGPointMake(140,350);}
                 completion:^(BOOL finished){NSLog(@"animation finished");
                 }
 ];

不知何故,动画就是行不通。图像仅显示在结束位置。NSLog 消息确实会显示出来。

有谁知道什么可能会使动画失败?

非常感谢。

4

5 回答 5

2

这里提供的解决方案都没有真正起作用,因为他可能在代码中的错误位置调用了他的轮换代码。

在这里调用它,它会工作

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];

}
于 2014-05-11T20:59:57.367 回答
0
[self.view addSubview:testView];

添加子视图后..UI不会立即更新..刷新需要一点时间..但是您的动画在它可以调用更新之前被调用..所以UI仅在动画完成后更新..我会建议[self.view setNeedsDisplay]在动画之前调用 .. 或稍等片刻后调用动画

于 2012-04-27T18:00:33.177 回答
0

我不确定粘贴的代码是否是您的确切代码!它的动画持续时间为 100 秒。这是故意的行为吗??

还可以尝试直接更改框架而不是中心。

UIImageView *testView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
[self.view addSubview:testView];
[testView setImage:[UIImage imageNamed:@"button.png"]];
[UIView animateWithDuration:0.5
                 animations:^{testView.frame =  CGRectMake(140,350,80,80);}
                 completion:^(BOOL finished){NSLog(@"animation finished");
                 }
 ];
于 2012-07-25T12:02:46.250 回答
0

添加 QuartzCore 框架:

#import <QuartzCore/QuartzCore.h>
于 2015-04-27T18:57:15.897 回答
0

您在动画代码中缺少几行。

[UIView animateWithDuration:100 
    delay:0 
    options:UIViewAnimationOptionAllowAnimatedContent 
    animations:^{
        testView.center =  CGPointMake(140,350);
    } completion:^(BOOL finished){NSLog(@"animation finished")}
];

这些动画是唯一的iOS 7,并且是比您上面举例说明的更好的解决方案。

您可能早就回答了这个问题,但我希望这个答案能帮助任何偶然发现这个答案的人。

于 2014-04-12T21:22:31.727 回答