如何水平翻转UIImage与Swift?

做UIImage翻转的解决scheme是Objective-C代码:

[UIImage imageWithCGImage:img.CGImage scale:1.0 orientation: UIImageOrientationDownMirrored] 

但是,imageWithCGImage在Swift中不可用! 有没有解决scheme水平翻转图像与斯威夫特? 谢谢!

大多数工厂方法都是快速转换为初始化器。 只要可用,即使类方法仍然可用,他们是首选。 您可以使用:

  init(CGImage cgImage: CGImage!, scale: CGFloat, orientation: UIImageOrientation) 

用法如下所示:

 var image = UIImage(CGImage: img.CGImage, scale: 1.0, orientation: .DownMirrored) 

在Swift中……(6.3.1)

 YourUIImage.transform = CGAffineTransformMakeScale(-1, 1) 

这也适用于UIView

在所有情况下,改变图像方向参数实际上并不是在翻转图像。 图像必须重新绘制…例如像这样:

Swift 3

 func flipImageLeftRight(_ image: UIImage) -> UIImage? { UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale) let context = UIGraphicsGetCurrentContext()! context.translateBy(x: image.size.width, y: image.size.height) context.scaleBy(x: -image.scale, y: -image.scale) context.draw(image.cgImage!, in: CGRect(origin:CGPoint.zero, size: image.size)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } 

斯威夫特4

 YOURIMAGEVIEW.transform = CGAffineTransform(scaleX: -1, y: 1) 

UIImage有水平翻转图像的方法。 它调用imageFlippedForRightToLeftLayoutDirection 。 此方法用于从右向左方向翻转图像。 更多细节你可以在这里检查苹果文件

随着迅速3它看起来像:

 let flippedImage = img.imageFlippedForRightToLeftLayoutDirection()