UIImageView 缩小底部空间

Posted

技术标签:

【中文标题】UIImageView 缩小底部空间【英文标题】:UIImageView downscale bottom space 【发布时间】:2019-07-30 20:55:47 【问题描述】:

我有两个具有相同约束和锚点的图像。 当我缩小其中一个时,我在父视图(红色背景)和 UIImageView(绿色背景)之间得到空的底部空间。 左图比例为 100%,右图为 80%

约束代码:

imageView.heightAnchor.constraint(equalToConstant: 32).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 32).isActive = true
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true

缩小代码:

imageView.transform = CGAffineTransform(scaleX: scale, y: scale)

如何将缩小的图像移动到视图的底线以避免 UIView 和 UIImageView 底部之间的空间?

更新:

同时设置imageView.contentMode = .bottom 也无济于事

【问题讨论】:

【参考方案1】:

使用UIImageView.contentMode:

imageView.contentMode = .bottom

阅读有关内容模式的更多信息here。

编辑:

你不应该缩放 UIImageView。你正在做的事情有点奇怪,因为你正在缩小它,然后又用约束再次放大它。相反,scale the image itself。

【讨论】:

我试过了,但是这种模式只是让图像变小了,并没有反映到 UIImageView。我更新了我的问题 查看我的编辑。另外,你到底想要什么?您想要视图底部的图像还是红色视图底部的绿色视图?为什么不让红色视图成为图像视图?【参考方案2】:
override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: imageView.bounds.height - imageView.frame.height).isActive = true

before

after re layout view 并在转换后调用 view.layoutIfNeeded()

【讨论】:

转换后调用 view.layoutIfNeeded()

以上是关于UIImageView 缩小底部空间的主要内容,如果未能解决你的问题,请参考以下文章

将大 UIImage 比例下载到 UIImageView

将 UIImage 调整为 UIImageView

如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?

UIImage 混合模式问题

UIImage 调整大小并裁剪以适合

裁剪 UIImage 的部分以获得新的纵横比并缩小到大小