创建一个UIImage可以使用以下方法:
| 1
 | - initWithCGImage:scale:orientation:
 | 
这个方法看起来可以对图片进行旋转,但是这个方法实际上是创建一个传入的CGImage的拷贝,并且把CGImage的imageFlags属性里的imageOrientation改变了.所以对一些无视这个flag的类,例如UIActivityViewController,使用这个方法将得不到正确的效果.处理后的图片在使用某些软件加载的时候也会没有效果.
所以,下面介绍一个从像素上旋转图片的方法:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
 | func rotateImage(oldImage : UIImage ,byDegree degree: Double) -> UIImage{let rotatedViewBox = UIView(frame: CGRectMake(0,0,oldImage.size.height,oldImage.size.width))
 let t : CGAffineTransform = CGAffineTransformMakeRotation(CGFloat(degree * M_PI / 180.0))
 rotatedViewBox.transform = t
 
 let rotatedSize = rotatedViewBox.frame.size
 
 UIGraphicsBeginImageContext(rotatedSize)
 
 let bitmap = UIGraphicsGetCurrentContext()
 
 CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2)
 
 CGContextRotateCTM(bitmap, CGFloat(degree * M_PI / 180.0))
 
 CGContextDrawImage(bitmap, CGRectMake(-oldImage.ssize.height/2, -oldImage.size.width/2, oldImage.size.height, oldImage.size.width), oldImage.CGImage)
 let newImage = UIGraphicsGetImageFromCurrentImageContext()
 UIGraphicsEndImageContext()
 return newImage
 }
 
 |