如何有条件地在 StackView 中居中图像

Posted

技术标签:

【中文标题】如何有条件地在 StackView 中居中图像【英文标题】:How to center image in StackView conditionally 【发布时间】:2019-03-17 13:51:02 【问题描述】:

我有一个包含 UIImageView 和 UILabel 的 StackView。有时 UILabel 包含一个引用,有时它不包含。当它发生时,我希望 UIImageView 为设备宽度的 40% - 我让那部分工作。当它不希望 UIImageView 仍然是相同的宽度时,只是水平居中。实现这一目标的最简单方法是什么?

【问题讨论】:

2 个子堆栈视图并在标签为空字符串时隐藏第二个堆栈视图。或者只是隐藏标签。 【参考方案1】:

看来UIStackView并不是你真正需要的,而是简单的UIView,在父视图中垂直居中,包含UIImageViewUILabel,然后设置imageView.trailing等于@ 987654326@,加上label.sizeToFit()

但如果你想坚持你的设计,你可以做的是以编程方式设置 UIStackView 轴。例如,在 IB 中设置堆栈视图,如:

UIStackView IB setting

然后在viewDidLoad()方法中的代码中:

if label.text == "" 
    stackView.axis = .vertical
 else 
    stackView.axis = .horizontal
 

还有label.sizeToFit()

这应该可以解决问题。

【讨论】:

以上是关于如何有条件地在 StackView 中居中图像的主要内容,如果未能解决你的问题,请参考以下文章

将图标图像居中,该图标图像位于stackview内部的图像内部

如何在弹性项目(单元格)中居中图像

如何在引导程序中居中响应图像? [复制]

如何通过stackview将图像添加到tableview单元格

如何在一行中居中图像和滑块[重复]

如何在 ionic 2 应用程序中居中图像