Это часть большого проекта, но моя проблема может быть упрощена следующим образом: у меня есть простое представление с ImageView и кнопкой «Повернуть».Всякий раз, когда я нажимаю кнопку, изображение внутри ImageView поворачивается на 90 градусов.Из большей части того, что я нашел на StackOverflow и других сайтах, это должно работать (обратите внимание, что мое изображение является квадратным изображением, ширина и высота которого равна 464):
- (UIImage *) getRotatedImageFromImage:(UIImage*)image:(int)rotate_index
{
UIImage *rotatedImage;
// Get image width, height of the bounding rectangle
CGRect boundingRect = CGRectMake(0, 0, image.size.width, image.size.height);
NSLog(@"width = %f, height = %f",boundingRect.size.width,boundingRect.size.height);
NSLog(@"rotate index = %d",rotate_index);
// Create a graphics context the size of the bounding rectangle
UIGraphicsBeginImageContext(boundingRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextRotateCTM(context, rotate_index*M_PI/2);
// Draw the image into the context
[image drawInRect:boundingRect];
// Get an image from the context
rotatedImage = UIGraphicsGetImageFromCurrentImageContext();
// Clean up
UIGraphicsEndImageContext();
NSLog(@"rotatedImage size = (%f, %f)",rotatedImage.size.width,rotatedImage.size.height);
return rotatedImage;
}
- (IBAction) rotateImage
{
NSLog(@"rotate image");
rotateIndex++;
if (rotateIndex >= 4)
rotateIndex = 0;
[imageView setImage: [self getRotatedImageFromImage:imageToSubmit :rotateIndex]];
}
Но это не такне работает по некоторым причинам.Что у меня есть: при нажатии кнопки изображение появляется только тогда, когда rotateIndex достигает 0, и изображение совпадает с исходным изображением (что ожидается).Когда rotateIndex равен 1, 2, 3, imageView ничего не отображает, даже если размер распечатанного изображения rotatedImage правильный (т.е. 464 x 464).Может ли кто-нибудь сказать мне, что происходит не так?Спасибо.