web-dev-qa-db-ja.com

SwiftでUIImageを水平に反転させる方法は?

UIImageフリッピングを行うソリューションは、Objective-Cコードを使用することです。

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

ただし、imageWithCGImageはSwiftでは使用できません! Swiftで画像を水平方向に反転させるソリューションはありますか?ありがとう!

29
Lim Thye Chean

ほとんどのファクトリメソッドは、Swiftで初期化子に変換されます。使用可能な場合は常に、クラスメソッドがまだ使用可能な場合でも優先されます。次を使用できます。

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

使用法は次のようになります。

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

Swiftで...(6.3.1)

YourUIImage.transform = CGAffineTransformMakeScale(-1, 1)

これはUIViewでも動作します

25
duyn9uyen

画像の向きのパラメータを変更しても、実際にはすべての場合で画像が反転するわけではありません。画像はなんとかして再描画する必要があります...たとえば次のように:

Swift

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
}
17
Alex Shubin

私にとって最も簡単な方法は、次のようにUIImage.withHorizontallyFlippedOrientation()インスタンスメソッドを使用することでした。

let flippedImage = straightImage.withHorizontallyFlippedOrientation()

シンプルなワンライナーはいつも私を幸せにします:)

12
Francesco D.M.

Swift 4

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