代码非常基础:
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消息。
有谁知道动画会失败的原因?
非常感谢。
答案 0 :(得分:0)
[self.view addSubview:testView];
添加子视图后... UI不会立即更新..需要一点时间来刷新..但是在调用动画之前调用动画更新..所以只有在动画完成后才会更新UI ..我建议在动画之前调用[self.view setNeedsDisplay]
..或稍微延迟后调用动画
答案 1 :(得分: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");
}
];
答案 2 :(得分:0)
您在动画代码中缺少几行。
[UIView animateWithDuration:100
delay:0
options:UIViewAnimationOptionAllowAnimatedContent
animations:^{
testView.center = CGPointMake(140,350);
} completion:^(BOOL finished){NSLog(@"animation finished")}
];
这些动画仅对iOS 7
是唯一的,并且是比上面举例说明的更好的解决方案。
你可能早就回答了这个问题,但我希望这个答案可以帮助其他任何人绊倒这个答案。
答案 3 :(得分:0)
这里提供的解决方案实际上都没有用,因为他可能在代码中的错误位置调用他的轮换代码。
在这里打电话,它会起作用
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
}
答案 4 :(得分:0)
添加QuartzCore框架:
#import <QuartzCore/QuartzCore.h>