Самый быстрый подход для поворота изображения на iPhone - PullRequest
0 голосов
/ 22 июня 2009

Мне нужно повернуть UIImage в ответ на ввод пользователя. Я хотел бы, чтобы это было как можно более гладко, и поэтому хотел бы знать, какой самый быстрый способ выполнить преобразование и рендеринг. В идеале я бы хотел остаться в рамках UIKit или Quartz. Свойства изображения следующие:

  • Размер приблизительно 250x300 пикселей
  • Не непрозрачно - требуется рендеринг с альфа-каналом

Каковы наилучшие подходы и практики для реализации этой функциональности?

Примечание: В этом ответе stackoverflow описан подход , но я не уверен, что это оптимально. Я, конечно, попробую, но я бы хотел узнать, считается ли это «лучшей практикой».

Ответы [ 2 ]

6 голосов
/ 22 июня 2009

Этот пример применения слоя Core Animation к UIImage может послужить источником вдохновения:

UIImage* rotatingImage = [UIImage imageNamed:@"someImage.png"];

CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];

rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 0.25f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;

[rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
1 голос
/ 22 июня 2010

Если вы отображаете свой UIImage в UIImageView, почему бы просто не установить свойство transform в представлении?

myimageView.transform = CGAffineTransformMakeRotation(<angle in radians>);

Это так просто, и для небольшого изображения, подобного тому, о котором вы говорили, это очень эффективно - все представления UIKit имеют многослойную поддержку, поэтому аппаратно ускоряется. Это свойство также можно анимировать.

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