为了这个目的,我正在为水平位置设置UIImageview的动画我已经使用了以下代码我已经使用了NSTimer
timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
-(void)onTimer
{
[UIView animateWithDuration:10.0f animations:^{
//Moving_Cloud is an image view
Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height);
}];
}
现在我遇到的问题是我需要在动画持续时间之后得到“Moving_Cloud”的坐标 请帮帮我 提前谢谢。
答案 0 :(得分:1)
[UIView animateWithDuration:10.0f animations:^{
Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height);
} completion:^(BOOL finished){
CGPoint newPost = Moving_Cloud.frame.origin;
CGFloat xPos = newPost.x;
CGFloat yPos = newPost.y;
// do stuff ?
}];
在动画结束时,将触发“完成:”块。
通常你的图像应该是x = 200,y = 150。
请注意,这些坐标是相对于它的superview(视图包装Moving_Cloud视图)。
注意:强>
按照惯例,我建议将“Moving_Cloud”更改为“movingCloud”。
实例类以Objective-C中的较低上限开始。
也不要使用_而是使用大写字母。
答案 1 :(得分:1)
Abhijit Chaudhari在我上一篇文章的评论中明白,你想要的不是“动画持续时间之后”的位置,而是期间动画中的位置。
如果我仍然没有做对,请澄清你的问题。 (或者给我一个新的脑子)
-(void) animateMe(){
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
[UIView animateWithDuration:10.0f animations:^{
//Moving_Cloud is an image view
Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height);
}];
}
-(void)onTimer:(id)sender{
NSLog(@"Currently in x=%f", [[ddddd.layer presentationLayer] frame].origin.x);
NSLog(@"Currently in y=%f", [[ddddd.layer presentationLayer] frame].origin.y);
}