2013-06-26 6 views
0

Это мой вопрос:Почему imageWithCGImage: шкала: ориентация: не работает?

Я хочу повернуть свое изображение, когда у меня получится степень его вращения.

И мой код здесь

UIImage *image = imageView.image; 
UIImage *originalImage = imageView.image; 
CGAffineTransform transform = imageView.transform; 

     if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2))) { 
      image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationRight]; 
     } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI))) { 
      image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationDown]; 
     } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2 * 3))) { 
      image = [UIImage imageWithCGImage:originalImage.CGImage scale:originalImage.scale orientation:UIImageOrientationLeft]; 
     } else if (CGAffineTransformEqualToTransform(transform, CGAffineTransformRotate(CGAffineTransformIdentity, M_PI * 2))) { 
      image = originalImage; // UIImageOrientationUp 
     } 

Как я надеюсь, то image покажет, как повернется. Но после поворота эти изображения все еще то, чем они были. Это значит, что метод imageWithCGImage:scale:orientation: не работал.

Кто-нибудь может мне сказать, почему? Благодарю.

+0

Вы сначала 'UIImage * image = imageView.image;' не имеет никакого эффекта, кроме как объявить «образ», который затем устанавливается на результат преобразования. Но вы ничего не делаете с результатом. Натан Оу имеет правильный ответ. – Jeff

ответ

0

Вам нужно установить изображение снова (после всего этого кода)

imageView.image = image; 
1

используется

UIImage *image = imageView.image; 

, чтобы получить ручку imageView.image, и вы установите измененное изображение для (UIImage *), которое является просто ссылкой на изображение.Имя. Если вы хотите, чтобы изображениеView.image было изменено, вы должны снова установить imageView.image, чтобы изменить его.

добавьте это в спину после вашей трески es

imageView.image = image; 
1

Это то, что вам нужно будет в корне понять. Когда вы получаете указатель на другой объект, а затем устанавливаете этот указатель на что-то еще, он не влияет на исходный объект. Подумайте об этом так:

Lunch *myLunch = myFriend.CurrentLunch; 

Это означает, что ваш обед в настоящее время обед вашего друга.

myLunch = new MisoRamen(); 

Теперь ваш обед - это другой обед.

myLunch.InsertWeirdSauce(); 

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

Lunch *newLunch = new MisoRamen(); 
newLunch.InsertWeirdSauce(); 
myFriend.CurrentLunch = newLunch; 

Теперь ваш друг будет в шоке, когда он/она ест обед с странным соусом.

+0

А, я думаю, это то же самое, что ответ Натана Оу, но не так ясно. – Jeff