我在swift中处理一个项目,我使用xib文件来加载我的标题图像。截至目前,在我的图像视图中只能部分显示。我怎么能解决这个问题。
但我得到的是这个。
你可以看到"月亮"屏幕右侧的所有方式都不在图片中。我怎样才能正确地扩展它?
答案 0 :(得分:0)
尝试使用下面的行重新调整图像
[[UIImage imageNamed:@"YOURIMAGE"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]
UIEdgeInsetsMake
左上角右下角必须正确。
答案 1 :(得分:0)
你需要使imageView和图像的比例相等,即如果imageView的大小为26:46(高度:宽度),图像应遵循相同的比例标准13:23或52:92。您需要根据宽度/高度更改UIImageView以匹配图像的比例。无法拉伸图像。
答案 2 :(得分:0)
请在预览应用中查看图片,将宽高比设置为imageView。 打开图像集图像宽度与xib中UIImageView的宽度相同,然后相应的高度将在预览编辑器中调整。
现在转到你的xib文件并将imageview高度设置为与预览中显示的高度相同,然后设置imageView宽高比。
确保您已在xib中为imageView提供了足够的约束。
这样,图像将根据不同的设备尺寸进行调整。 确保图像宽度不小于从xib计算的最大imageView宽度,由于纵横比属性,imageview高度将相应调整。
答案 3 :(得分:0)
这里要明白的一点是,它不会使用1张图像为所有屏幕工作。
为什么:Designer为您提供了58高度和375宽度(iphone 8的宽度)的图像。
所以有一个问题如何在iPhone SE和iPhone 8plus上显示这个图像?而你只有1张图片。答案是你不能用1张图像使像素完美。
解决方案:
scaleFill
内容模式,并为自己设置文字标签。希望它有所帮助。
答案 4 :(得分:0)
您必须使用scaleToFill
才能提供帮助
AspectFill
缩放内容以完全填充视图,保持宽高比和ScaleToFill
拉伸视图以填充可用空间而不保持宽高比
所以,这可以拉伸你的图像,但它会起作用
答案 5 :(得分:0)
如果您只是想在不保持宽高比的情况下拟合给定图像,那么只需使用
即可imageView.contentMode = .scaleToFill
但是如果要保持纵横比,则需要调整图像大小以适合imageView。您可以使用以下功能并传递imageView大小并应用返回的图像。详细了解here
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)