Для анимации поверните ur ImageView, преобразовав его:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
[UIView setAnimationRepeatAutoreverses:NO];
[UIView setAnimationRepeatCount:0];
imageViewObject.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations];
и когда вы сохраняете изображение в базовые данные, то перед сохранением изображения поверните это изображение на угол imageViewRotated из текущей позиции.
для вращения UIImage используйте это: // Помните, что угол должен быть в радианах, если он не в радианах, то конвертировать угол в радиан.
- (UIImage*) rotateInRadians:(float)radians
{
const size_t width = self.size.width;
const size_t height = self.size.height;
CGRect imgRect = (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = width, .size.height = height};
CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, CGAffineTransformMakeRotation(radians));
/// Create an ARGB bitmap context
CGContextRef bmContext = CreateARGBBitmapContext(rotatedRect.size.width, rotatedRect.size.height, 0);
if (!bmContext)
return nil;
CGContextSetShouldAntialias(bmContext, true);
CGContextSetAllowsAntialiasing(bmContext, true);
CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
/// Rotation happen here (around the center)
CGContextTranslateCTM(bmContext, +(rotatedRect.size.width * 0.5f), +(rotatedRect.size.height * 0.5f));
CGContextRotateCTM(bmContext, radians);
/// Draw the image in the bitmap context
CGContextDrawImage(bmContext, (CGRect){.origin.x = -(width * 0.5f), .origin.y = -(height * 0.5f), .size.width = width, .size.height = height}, self.CGImage);
/// Create an image object from the context
CGImageRef rotatedImageRef = CGBitmapContextCreateImage(bmContext);
UIImage* rotated = [UIImage imageWithCGImage:rotatedImageRef];
/// Cleanup
CGImageRelease(rotatedImageRef);
CGContextRelease(bmContext);
return rotated;
}
Надеюсь, это вам поможет.