2017-05-25 26 views
1

我发现了几个例子来调整图像的大小,使其纵横比保持为CGRect,或者只有像this post那样的宽度。但是这些示例总是会创建一个类似于scaleAspectFit内容模式的新图像。我想得到一个像scaleAspectFill内容模式,但我没有找到任何示例。如何以编程方式调整UIImage的大小,就像设置scaleAspectFill内容模式一样?

+0

我做了这件事,请检查出来,希望它可以帮助你 https://stackoverflow.com/a/43891737/4918968 –

回答

2

我已经将这个用于我的一个项目。

extension UIImage 
{ 
    func imageWithSize(size:CGSize) -> UIImage 
    { 
     var scaledImageRect = CGRect.zero 

     let aspectWidth:CGFloat = size.width/self.size.width 
     let aspectHeight:CGFloat = size.height/self.size.height 

     //max - scaleAspectFill | min - scaleAspectFit 
     let aspectRatio:CGFloat = max(aspectWidth, aspectHeight) 

     scaledImageRect.size.width = self.size.width * aspectRatio 
     scaledImageRect.size.height = self.size.height * aspectRatio 
     scaledImageRect.origin.x = (size.width - scaledImageRect.size.width)/2.0 
     scaledImageRect.origin.y = (size.height - scaledImageRect.size.height)/2.0 

     UIGraphicsBeginImageContextWithOptions(size, false, 0) 

     self.draw(in: scaledImageRect) 

     let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return scaledImage! 
    } 
} 
相关问题