Доступ к текущей позиции UIView во время анимации

Я пытаюсь найти текущую позицию iPhone ImageView, которая анимируется по экрану.

Я создаю и анимирую изображение Image так

-(IBAction)button:(UIButton *)sender{
    UIImageView *myImageView =[[UIImageView alloc] initWithImage:
                                     [UIImage imageNamed:@"ball.png"]];    
    myImageView.frame = CGRectMake(0, self.view.frame.size.height/2, 40, 40);    
    [self.view addSubview:myImageView];
    [myArray addObject:myImageView];

    [UIView animateWithDuration:.5 
                          delay:0 
                options:(UIViewAnimationOptionAllowUserInteraction) // | something here?)
                     animations:^{
                         myImageView.frame = CGRectOffset(myImageView.frame, 500, 0);    
                     }
                     completion:^(BOOL finished){
                         [myArray removeObject:myImageView];
                         [myImageView removeFromSuperview];
                         [myImageView release];
                     }
     ];
}

то для обнаружения текущего CGPoint изображенияView я вызываю этот метод каждые 60 секунд секунды

-(void)findPoint{

    for (UIImageView *projectile in bullets) {        
         label.text = [NSString stringWithFormat:@"%f", projectile.center.x];
         label2.text = [NSString stringWithFormat:@"%f", projectile.center.y];
    }
}

Однако это только дает мне точку, в которой заканчивается анимация, я хочу получить текущую CGPoint изображения, которое анимируется по экрану. Есть ли способ, который мне нужно применить, кроме UIViewAnimationOptionAllowUserInteraction, для этого? Если нет, как мне получить текущую позицию анимационного образа?

Ответ 1

Вы можете использовать presentationLayer - свойство CALayer, которое "обеспечивает близкое приближение к версии отображаемого слоя". Просто используйте его следующим образом:

CGRect projectileFrame = [[projectile.layer presentationLayer] frame];

Ответ 2

Намного проще настроить KVO для view.frame, как описано в этом ответе. Вы можете проверить новое значение, чтобы получить новый кадр как CGRect.