调整ImageView(图像填充其边界)的大小,同时保留UIImage纵横比

时间:2015-10-08 11:07:13

标签: ios swift uiimageview uiimage

如何调整UIImageView的大小以使其高度(宽度始终等于屏幕的纵向模式宽度)与它所显示的UIImage的宽高比成比例?为了更好地理解我的意思,请以BuzzArt应用程序为例。

当图像较长(矩形)时,UIImageView会调整......看起来变得更长 enter image description here

当UiImage是SQUARE时,UIImageView也会调整..看...变得很紧张 enter image description here

如果我无法完美描述它,我很抱歉,但我希望上面的屏幕截图可以提供帮助。

我如何在Swift中做同样的事情?

提前致谢! :)

1 个答案:

答案 0 :(得分:1)

首先我们需要获得屏幕的宽度:

let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width

接下来,我们获取图像并使用此图像创建图像视图。在这里,我假设你有一个y用于图像视图的y原点(图像视图左上角的y坐标),还有一个height用于图像视图的高度,即图像的最大高度。 y之前的0表示图像视图一直到屏幕的左边缘:

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.addSubview(imageView)

n.b。虽然您的应用看起来并不是这样,但我发现了一个导致图片略微移动的错误,即height的{​​{1}}小于{{1} }}

完整:

imageView
相关问题