touchsMoved drag на UIImage после CGAffineTransformRotate Заставляет изображение вращаться вне экрана - PullRequest
0 голосов
/ 08 февраля 2011

Я не уверен, почему после вызова этого метода CGAffineTransform для UIImageView, а затем попытки его перетащить, он выходит из поля зрения. Любая помощь приветствуется.

- (void)setRotation:(Float32)rotation {
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0.0,0.0);
transform = CGAffineTransformRotate(transform, degreesToRadians(rotation));
[self setTransform:transform];
}

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {

CGPoint pt = [[touches anyObject] locationInView:self];
CGRect frame = [self frame];

frame.origin.x += pt.x - startLocation.x;
frame.origin.y += pt.y - startLocation.y;

[self setFrame:frame];

}

1 Ответ

1 голос
/ 08 февраля 2011

Если свойство transform отличается от идентификатора, свойство frame не определено.Вы не должны читать или писать в него.Вместо этого вы должны использовать свойства center и bounds.

Также в ваших -setRotation первые 2 строки бесполезны.Первая строка присваивает значение, которое затем перезаписывается второй строкой.Чистым эффектом второй строки является присвоение идентификатора переменной (перевод 0, 0 - ничто).Вместо этого метод может быть просто

self.transform = CGAffineTransformMakeRotation(degreesToRadians(rotation));
...