2017-09-02 6 views
1

I créé UIImage gris vide, en utilisant le code ci-dessousCadre et l'image dans l'aspect spécifique Ratio

let size = CGSize(width: 212, height: 332) 

UIGraphicsBeginImageContextWithOptions(size, true, 0) 
UIColor.gray.setFill() 
UIRectFill(CGRect(x: 0, y: 0, width: size.width, height: size.height)) 
let backgroundImage2: UIImage? = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

Il montre que la sortie enter image description here

Maintenant, je dois mettre UIImage sur la zone spécifique dans ce UIImage. comme indiqué ci-dessous Image. Dites haut, gauche, droite devrait être 30 pixels, et plus bas que cela, disons 200 pixels. maintien du rapport d'aspect de l'image interne.

enter image description here

+0

Vous pouvez dessiner l'image en utilisant la méthode drawInRect et a ajouté que par rect fourni. C'est ce dont tu as besoin? –

+0

@MikeAlter Je l'ai fait mais le problème est de maintenir le ratio d'aspect tout en faisant Draw (in: rect:) –

+0

Même si vous faites une petite démo à votre fin, vous serez confronté au même problème ratio d'aspect @MikeAlter –

Répondre

0

utilisation de deux vues d'image (soit UIImageView ou GLKView), ce qui rend le "image" d'un sous-vue de la vue "d'arrière-plan gris". Après avoir correctement positionné "l'image", fusionnez les deux images en une seule.

est ici une extension UIView que j'utilise:

extension UIView { 
    public func createImage() -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(
      CGSize(width: self.frame.width, height: self.frame.height), true, 1) 
     self.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return image! 
    } 
}