获取动画UIImageview的坐标

时间:2013-07-18 04:04:23

标签: iphone ios objective-c cocoa-touch

为了这个目的,我正在为水平位置设置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”的坐标 请帮帮我 提前谢谢。

2 个答案:

答案 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);
}