resize UIImage par programmation ne fonctionne pas

J'essayais de resize mon image par programme pour l'adapter à la taille de l'écran, mais lorsque je construis mon application, l'image ne s'affiche même pas. Je vois juste un écran vide, est-ce que quelqu'un sait ce que j'ai fait de mal?

Ceci est mon code (appris cela d'autres threads sur le redimensionnement des images):

class ViewControllerSport: UIViewController { @IBOutlet weak var FotoSport: UIImageView! let screen = UIScreen.mainScreen().bounds override func viewDidLoad() { super.viewDidLoad() FotoSport.frame = CGRect(x: 20, y: 20, width: screen.width * 0.5, height: screen.width * 0.5) FotoSport.image = UIImage(named: "Blokker") } 

La fonction suivante redimensionne une image. Il prend deux arguments: l'image et la taille désirée.

 func ResizeImage(image: UIImage, targetSize: CGSize) -> UIImage { let size = image.size let widthRatio = targetSize.width / image.size.width let heightRatio = targetSize.height / image.size.height // Figure out what our orientation is, and use that to form the rectangle var newSize: CGSize if(widthRatio > heightRatio) { newSize = CGSizeMake(size.width * heightRatio, size.height * heightRatio) } else { newSize = CGSizeMake(size.width * widthRatio, size.height * widthRatio) } // This is the rect that we've calculated out and this is what is actually used below let rect = CGRectMake(0, 0, newSize.width, newSize.height) // Actually do the resizing to the rect using the ImageContext stuff UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) image.drawInRect(rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } 

Utilisation:

 self.ResizeImage(UIImage(named: "MyImage.png")!, targetSize: CGSizeMake(320.0, 700.0)) 

Lien de reference :: Redimensionner l'image

Swift 3.0:

 func ResizeImage(_ image: UIImage, targetSize: CGSize) -> UIImage? { let size = image.size let widthRatio = targetSize.width / image.size.width let heightRatio = targetSize.height / image.size.height // Figure out what our orientation is, and use that to form the rectangle var newSize: CGSize if(widthRatio > heightRatio) { newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio) } else { newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio) } // This is the rect that we've calculated out and this is what is actually used below let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height) // Actually do the resizing to the rect using the ImageContext stuff UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) image.draw(in: rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } 

Utilisation:

 self.ResizeImage(UIImage(named: "MyImage.png")!, targetSize: CGSize(width: 320.0, height: 700.0)) 

Tout d'abord, vérifiez que UIImage(named: "Blokker") renvoie une image ou nil. S'il renvoie une image, pour mettre à l'échelle une image dans UIImageView, vous pouvez utiliser l'une de ces options:

 UIViewContentModeScaleToFill; UIViewContentModeScaleAspectFit; UIViewContentModeScaleAspectFill; 

ScaleToFill ne fait que mettre à l'échelle l'image.

AspectFit et AspectFill mettent à l'échelle l'image en conservant ses proportions.

Fit ajustera l'image jusqu'à ce que tout soit montré. Fill met à l'échelle l'image jusqu'à ce que l'un de ses côtés soit égal à l'un des côtés UIImageView.

http://img.iosberry.com/ios/scale_aspect.jpg