2017-04-04 1 views
0

En ce moment, mon code affiche une image comme celui-ciComment faire pivoter une image masquée?

enter image description here Il fonctionnerait si je pouvais faire pivoter l'image dans le sens horaire de 90 degrés. Comment ferais-je cela? Le code est répertorié ci-dessous. J'ai sorti quelques lignes inutiles de code pour cela.

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
    var screenView: UIImageView! 
    var image1 = UIImage(named: "w") 

    func cropImageIntoQuarterSquare(image: UIImage) -> UIImage? { 
     //shape of mask 
     let image = photoDispaly.image 
     let maskingImage = UIImage(named: "mask5") 

     //where the masking code starts 
     photoDispaly.image = maskImage(image: image!, mask: maskingImage!) 
     photoDispaly.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin] 
     photoDispaly.contentMode = .scaleAspectFit // OR .scaleAspectFill 
     photoDispaly.clipsToBounds = true 

     let originalImageSize: CGSize = image!.size 
     let smallImageSize = CGSize(width: (originalImageSize.width + 40), height: (originalImageSize.height + 40)) 
     UIGraphicsBeginImageContext(smallImageSize) 
     image?.draw(at: CGPoint.zero) 
     let imageResult = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return imageResult 
    } 

    @IBOutlet var photoDispaly: UIImageView! 

    func maskImage(image:UIImage, mask:(UIImage))->UIImage{ 
     let imageReference = image.cgImage 
     let maskReference = mask.cgImage 
     let imageMask = CGImage(maskWidth: maskReference!.width, 
           height: maskReference!.height, 
           bitsPerComponent: maskReference!.bitsPerComponent, 
           bitsPerPixel: maskReference!.bitsPerPixel, 
           bytesPerRow: maskReference!.bytesPerRow, 
           provider: maskReference!.dataProvider!, decode: nil, shouldInterpolate: true) 
     let maskedReference = imageReference!.masking(imageMask!) 
     let maskedImage = UIImage(cgImage:maskedReference!) 
     return maskedImage 
    } 

    func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) { 
     if let error = error { 
      return 
     } else { 
      return 
     } 
    } 

Répondre

0

vous pouvez exécuter une transformation sur votre UIImageView dans votre fonction viewDidLoad

photoDispaly.transform = CGAffineTransform(rotationAngle: M_PI/4) 

aussi vous pouvez renommer Dispaly à afficher;)

+0

cela est en train de changer la partie qui est affichage, mais une fois l'image est conforme est toujours à 90 degrés dans le sens inverse des aiguilles d'une montre. Cela n'a pas du tout changé l'image de sortie. Au moins en mettant le code dans la vue a chargé la section. –