Подтвердить что ты не робот

Доступ к текущей позиции 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, для этого? Если нет, как мне получить текущую позицию анимационного образа?

4b9b3361

Ответ 1

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

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

Ответ 2

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