Как AspectFit Фоновое изображение UIView в Swift?
Когда я устанавливаю фоновое изображение как изображение шаблона, тогда изображение растягивается, поэтому я хочу установить его как изображение по размеру, так как это можно сделать?
let Image1 = UIImage(named: KeyboardBG_image)
UIGraphicsBeginImageContext(keyboardview.frame.size);
Image1?.draw(in: keyboardview.bounds);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = UIColor(patternImage: image!)
Спасибо..
1 ответ
Есть метод в AVFoundation
это может помочь вам создать изображение в прямоугольнике определенного размера, сохраняя при этом пропорции. Это вычислит размер прямоугольника на основе предоставленного вами размера. Я использовал максимальную высоту, поскольку исходное изображение представляет собой альбомное изображение.
/* create the image at original size */
let image1 = UIImage(named: "Landscape-1276x800.jpg")!
/*
* create bounding rect with largest possible height based on width
* this will get you the aspect height for the specified width
*/
let boundingRect = CGRect(x: 0, y: 0, width: 200, height:CGFloat.greatestFiniteMagnitude)
/*
* Returns a scaled CGRect that maintains the aspect ratio specified
* by a CGSize within a bounding CGRect
*/
let aspectRect = AVMakeRect(aspectRatio: image1.size, insideRect: boundingRect)
/*
* create a UIGraphicsImageRenderer to draw the image, this replaces all
* the UIGraphicsContext stuff that was used to draw images
*/
let renderer = UIGraphicsImageRenderer(size: aspectRect.size)
/*
* WARNING be careful about the origin points, if the result of the calculation
* is an exponential value like 8.988465674311579e+307, then the image won't draw.
* To be safe I set the origin to .zero
*/
let img = renderer.image { (context) in
image1.draw(in: CGRect(origin: .zero, size: aspectRect.size))
}