在UIImageView中旋转图像

是否有可能在UIImageView中只旋转图像? 我正在寻找关于它的信息,但我只find旋转UIImageVeiw的信息。

您可以使用以下代码旋转图像。 请注意,这使用一个CGImageRef,你可以从UIImage通过

CGImageRef imageRef = [self CGImageRotatedByAngle:[image CGImage] angle:30]; 

一旦你得到了旋转的图像,你可以将ImageView的图像设置为新的旋转图像,如下所示:

 UIImage* img = [UIImage imageWithCGImage: imageRef]; myImageView.image = img; 

这里是一个将旋转imageRef的方法:

 - (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle { CGFloat angleInRadians = angle * (M_PI / 180); CGFloat width = CGImageGetWidth(imgRef); CGFloat height = CGImageGetHeight(imgRef); CGRect imgRect = CGRectMake(0, 0, width, height); CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians); CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef bmContext = CGBitmapContextCreate(NULL, rotatedRect.size.width, rotatedRect.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst); CGContextSetAllowsAntialiasing(bmContext, YES); CGContextSetShouldAntialias(bmContext, YES); CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh); CGColorSpaceRelease(colorSpace); CGContextTranslateCTM(bmContext, +(rotatedRect.size.width/2), +(rotatedRect.size.height/2)); CGContextRotateCTM(bmContext, angleInRadians); CGContextTranslateCTM(bmContext, -(rotatedRect.size.width/2), -(rotatedRect.size.height/2)); CGContextDrawImage(bmContext, CGRectMake(0, 0, rotatedRect.size.width, rotatedRect.size.height), imgRef); CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext); CFRelease(bmContext); [(id)rotatedImage autorelease]; return rotatedImage; } 

看看旋转ImageView的图层。 您将需要导入QuartzCore库以使其可访问。

 myImageView.layer.transform = CGAffineTransformMakeRotation (1.5); 

请试试这个,对我有用:

 [UIView beginAnimations:nil context:nil]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; [UIView setAnimationRepeatCount:10]; myImgView.transform = CGAffineTransformMakeRotation(M_PI); [UIView commitAnimations]; 

祝你好运!

下面的代码在Swift中可以正常工作:

 let img = UIImage(CGImage: self.imageView.image!.CGImage, scale: 1.0, orientation: UIImageOrientation.Right) self.imageView.image = img self.imageView.setNeedsLayout() 

如果您需要旋转/翻转图像用于本地化的目的,您可以使用以下: imageView.image = imageView.image?.imageFlippedForRightToLeftLayoutDirection()