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

标签 ios swift uiimageview uiimage

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

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

当 UiImage 为 SQUARE 时,UIImageView 也会调整..see..它变得更短 enter image description here

如果我不能完美地描述它,我很抱歉,但我希望上面的屏幕截图能有所帮助。

我怎样才能在 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.尽管您的应用看起来并非如此,但我发现了一个导致图像轻微移动的错误,即您的 imageViewheight小于 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/

相关文章:

ios - 在 NSString 中搜索方括号

swift - Swift 2.0 中的异常(exception)。为什么是 'do' ?

ios - 如何在后台加载 UIImageView 对象?

ios - UITableView -> 如何在向下滚动时加载额外的条目?

ios - 如何将联系人移动和复制到 Gmail 帐户 iOS

ios - 根据过滤器数组过滤 UICollectionView

ios - 从 URL 创建 CGPDFDocument 在 Swift 3 中会产生错误?

ios - 快速将 UILabel 的内容包装在一个行单元格中

swift - 限制边距在 Xcode 上无法正常工作

ios - UIImageView 溢出到 Collection View 单元格之外