UIImageView XY координирует с движением слоя - PullRequest
0 голосов
/ 31 августа 2011

Я перемещаю свой UIImageView со слоем по экрану. Когда в какой-то момент я пытаюсь получить координаты x и y перемещенного изображения, используя imageView.frame.origin.x, я получаю исходные координаты, а не новые после перемещения. Как правильно получить X и Y?


Вот мой код:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect];  
imageView.animationImages = [NSArray arrayWithArray:imgNameArr];    
imageView.animationDuration = 2;
    imageView.animationRepeatCount = 0;
    [imageView startAnimating];
    [self.view addSubview:imageView];   
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = speed;
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO; 
CGMutablePathRef pointPath = CGPathCreateMutable();
CGPathMoveToPoint(pointPath, NULL, rect.origin.x, rect.origin.y);
    CGPathAddLineToPoint(pointPath, NULL, x, y);
pathAnimation.path = pointPath;
CGPathRelease(pointPath);   
[imageView.layer addAnimation:pathAnimation forKey:[NSString stringWithFormat:@"pathAnimation%@",objId]];
[imageView release];

1 Ответ

0 голосов
/ 31 августа 2011

Согласно документации UIView для свойства frame:

Предупреждение. Если свойство преобразования не является преобразованием идентичности, значение этого свойства не определено и поэтомуследует игнорировать.

Свойство frame также становится неопределенным, если вы настраиваете свойства слоя transform или affineTransform этого вида (которые фактически изменяются в UIView при установке его преобразования).В Cocoa Touch преобразования применяются во время композитинга композитором.В настоящее время то, что вы, кажется, получаете, когда применяется преобразование, является исходным кадром, как если бы оно не было преобразовано, но, как утверждают в документах, оно не определено, поэтому не полагайтесь на это.При просмотре без других преобразований я рекомендую использовать свойство представления center вместо применения преобразования.Это обновит ваш кадр правильно.Основываясь на эмпирических данных, UIKit также выглядит достаточно умным, так что простая настройка центра не приводит к снижению производительности по сравнению с применением преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...