Подтвердить что ты не робот

Как перевернуть UIImage горизонтально с помощью Swift?

Решение выполнить сброс UIImage осуществляется с помощью кода Objective-C:

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

Однако, изображениеWithCGImage недоступно в Swift! Есть ли решение для горизонтального перемещения изображения с помощью Swift? Спасибо!

4b9b3361

Ответ 1

Большинство методов factory преобразуются в инициализаторы в swift. Когда это возможно, даже если метод класса все еще доступен, они являются предпочтительными. Вы можете использовать:

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

Использование будет выглядеть так:

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

Ответ 2

В Swift.... (6.3.1)

YourUIImage.transform = CGAffineTransformMakeScale(-1, 1)

Это также работает с UIView

Ответ 3

Изменение параметра ориентации изображения фактически не переворачивает изображение во всех случаях. Изображение должно быть перерисовано каким-то образом... Например, например:

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

Swift 4

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

Ответ 5

UIImage имеет метод горизонтального отображения изображения. Он вызывает imageFlippedForRightToLeftLayoutDirection. Этот метод используется для отображения изображения для ориентации справа налево. Более подробную информацию вы можете проверить здесь Apple Doc

С быстрым 3 это будет выглядеть так:

let flippedImage = img.imageFlippedForRightToLeftLayoutDirection()