[英]What is the best method for resizing an image without losing its quality?
[英]Scaling the image fully without losing its content
嘗試用下面的行調整圖像大小
[[UIImage imageNamed:@"YOURIMAGE"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]
UIEdgeInsetsMake
左上右下必須正確。
您需要使imageView和圖像具有相等的比率,即imageView的大小為26:46(height:width)時,圖像應遵循相同的比率標准,即13:23或52:92。 您需要根據寬度/高度更改UIImageView以匹配圖像的比例。 無法拉伸圖像。
請在預覽應用中查看圖像,將縱橫比設置為imageView。 一旦您在xib中打開與UIImageView的寬度相同的圖像集圖像寬度,則相應地將在預覽編輯器中調整高度。
現在轉到您的xib文件,設置imageview高度與預覽中顯示的高度相同,然后設置imageView縱橫比。
確保對xib中的imageView施加了足夠的約束。
這樣,圖像將根據不同的設備尺寸進行調整。 確保圖像寬度不小於從xib計算得出的最大imageView寬度,由於寬高比屬性,imageview的高度將相應調整。
這里要了解的主要點是,它不適用於使用1張圖像的所有屏幕。
原因:設計師為您提供了58高度和375寬度(iphone 8的寬度)的圖像。
因此,有一個問題如何在iPhone SE和iPhone 8plus上顯示此圖像? 而且您只有1張圖片。 答案是,您無法使它具有1張圖像的完美像素。
解決方案:
scaleFill
內容模式,並自行放置文本標簽。 希望能幫助到你。
您必須使用scaleToFill
它將有所幫助
AspectFill
縮放內容以完全填充視圖,並保持縱橫比;而ScaleToFill
拉伸視圖以填充可用空間,而不保持縱橫比
因此,這可以拉伸您的圖像,但可以使用
如果您只想適合給定的圖像而不保持寬高比,則只需使用
imageView.contentMode = .scaleToFill
但是如果要保持寬高比,則需要調整圖像大小以適合imageView。 您可以使用下面的函數並傳遞imageView大小並應用返回的圖像。 在這里了解更多
extension UIImageView {
func imageScaledToFit(_ size: CGSize) -> UIImage {
let imageAspectRatio = self.size.width / self.size.height
let canvasAspectRatio = size.width / size.height
var resizeFactor: CGFloat
if imageAspectRatio > canvasAspectRatio {
resizeFactor = size.width / self.size.width
} else {
resizeFactor = size.height / self.size.height
}
let scaledSize = CGSize(width: self.size.width * resizeFactor, height: self.size.height * resizeFactor)
let origin = CGPoint(x: (size.width - scaledSize.width) / 2.0, y: (size.height - scaledSize.height) / 2.0)
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
draw(in: CGRect(origin: origin, size: scaledSize))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return scaledImage
}
}
現在您可以像
imageView.contentMode = .scaleAspectFit
imageView.image = image.imageScaledToFit(imageView.bounds.size)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.