bmt*_*033 3 uiimageview ios autolayout uistackview
我有一个带有垂直 UIStackView 的 UITableViewCell,它当前具有 .alignment = fill 和 distribution = fill。在堆栈视图中,我有一个 UILabel 和一个 UIImageView。
标签应该左对齐并在堆栈视图的宽度上拉伸(确实如此)。图像视图具有纵横匹配的内容模式,应该在堆栈视图的中间居中。我认为这是按照我想要的方式工作,直到我在 UIImageView 上设置背景颜色,然后意识到虽然图像本身看起来是正确的(缩放和居中),但视图本身延伸到 stackview 的整个宽度(就像标签一样)做)。
是否可以让标签拉伸堆栈视图的宽度而不是图像视图的宽度?理想情况下,我希望图像视图只是缩放图像的大小,而不是一直延伸到堆栈视图的边缘。
进行这些更改:
.center而不是.fill。在代码中,当您设置图像视图的图像时,还要在图像视图上创建纵横比约束,如下所示:
class MyCell: UITableViewCell {
@IBOutlet private var myImageView: UIImageView!
private var imageViewAspectConstraint: NSLayoutConstraint?
func setImage(_ image: UIImage) {
myImageView.image = image
imageViewAspectConstraint?.isActive = false
imageViewAspectConstraint = myImageView.widthAnchor.constraint(
equalTo: myImageView.heightAnchor,
multiplier: image.size.width / image.size.height)
imageViewAspectConstraint!.isActive = true
}
}
Run Code Online (Sandbox Code Playgroud)请注意,由于单元格可以重复使用,因此您还必须删除先前的纵横比约束(如果有)。我发布的代码imageViewAspectConstraint用于保存约束并在图像更改时将其删除。
| 归档时间: |
|
| 查看次数: |
6370 次 |
| 最近记录: |