如何调整 UIImageView 的大小,使其高度(宽度始终等于屏幕的纵向模式宽度)与其显示的 UIImage 的纵横比成比例?为了更好地形象化我的意思,以 BuzzArt 应用为例。
当图像较长(矩形)时,UIImageView 会调整..see..它变得更长
当 UiImage 为 SQUARE 时,UIImageView 也会调整..see..它变得更短
如果我不能完美地描述它,我很抱歉,但我希望上面的屏幕截图能有所帮助。
我怎样才能在 Swift 中做同样的事情?
提前致谢! :)
最佳答案
首先我们需要获取屏幕的宽度:
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
接下来我们获取图像并使用该图像创建 ImageView 。在这里,我假设您有一个 y
表示 ImageView 的 y 原点( ImageView 左上角的 y 坐标),还有一个 height
表示 ImageView 的高度,即图像的最大高度。 y
之前的 0 表示 ImageView 一直到屏幕的左边缘:
let image: UIImage = UIImage(named: "yourImageName")!
let imageView = UIImageView(image: image)
imageView.frame = CGRectMake(0,y,screenWidth,height)
接下来我们需要确保图像得到适当调整,并保持其纵横比不变。我们需要根据它是纵向还是横向图像使用不同的 contentMode
:
if image.size.height > image.size.width {
imageView.contentMode = .ScaleAspectFill // Portrait
} else {
imageView.contentMode = .ScaleAspectFit // Landscape
}
最后一步是添加 View :
view.addSubview(imageView)
n.b.尽管您的应用看起来并非如此,但我发现了一个导致图像轻微移动的错误,即您的 imageView
的 height
小于 screenWidth
。
全文:
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
let image: UIImage = UIImage(named: "yourImageName")!
let imageView = UIImageView(image: image)
imageView.frame = CGRectMake(0,y,screenWidth,height)
if image.size.height > image.size.width {
imageView.contentMode = .ScaleAspectFill // Portrait
} else {
imageView.contentMode = .ScaleAspectFit // Landscape
}
view.addSubview(imageView)
关于ios - 调整 ImageView 大小(图像填充其边界),同时保留 UIImage 纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014029/