如何调整UIImageView的大小以使其高度(宽度始终等于屏幕的纵向模式宽度)与它所显示的UIImage的宽高比成比例?为了更好地理解我的意思,请以BuzzArt应用程序为例。
当图像较长(矩形)时,UIImageView会调整......看起来变得更长
当UiImage是SQUARE时,UIImageView也会调整..看...变得很紧张
如果我无法完美描述它,我很抱歉,但我希望上面的屏幕截图可以提供帮助。
我如何在Swift中做同样的事情?
提前致谢! :)
答案 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