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

时间:2019-03-17 13:51:02

标签: ios swift autolayout uistackview

我有一个包含UIImageView和UILabel的StackView。有时,UILabel包含引号,有时则不包含引号。当它完成时,我希望UIImageView是设备宽度的40%-我可以用那部分工作。如果不是,我希望UIImageView仍然是相同的宽度,只是水平居中。实现此目的最简单的方法是什么?StackView

StackView Settings

1 个答案:

答案 0 :(得分:1)

似乎UIStackView并不是您真正需要的,而是简单的UIView,它在父视图中垂直居中,并包含UIImageViewUILabel,然后进行设置imageView.trailing等于label.leading加上label.sizeToFit()

但是,如果您想坚持自己的设计,则可以通过编程方式设置UIStackView轴。例如,在IB中设置堆栈视图,例如:

UIStackView IB setting

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

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

也使用label.sizeToFit()

应该可以解决问题。