La solution pour faire un retournement UIImage est avec le code Objective-C:
[UIImage imageWithCGImage:img.CGImage scale:1.0 orientation: UIImageOrientationDownMirrored]
Cependant, imageWithCGImage n'est pas disponible dans Swift! Existe-t-il une solution pour retourner l'image horizontalement avec Swift? Merci!
La plupart des méthodes d'usine sont converties en initialiseurs dans Swift. Chaque fois qu'elles sont disponibles, même si la méthode de classe est toujours disponible, elles sont préférées. Vous pouvez utiliser:
init(CGImage cgImage: CGImage!, scale: CGFloat, orientation: UIImageOrientation)
L'utilisation ressemblerait à ceci:
var image = UIImage(CGImage: img.CGImage, scale: 1.0, orientation: .DownMirrored)
Dans Swift .... (6.3.1)
YourUIImage.transform = CGAffineTransformMakeScale(-1, 1)
Cela fonctionne également avec un UIView
La modification du paramètre d'orientation de l'image ne retourne pas réellement l'image dans tous les cas. L'image doit être redessinée d'une manière ou d'une autre ... Par exemple, comme ceci:
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
}
Pour moi, le moyen le plus simple était d'utiliser la méthode d'instance .withHorizontallyFlippedOrientation()
de UIImage
comme suit:
let flippedImage = straightImage.withHorizontallyFlippedOrientation()
Les simples lignes simples me font toujours plaisir :)
Swift 4
YOURIMAGEVIEW.transform = CGAffineTransform(scaleX: -1, y: 1)