将视图顶部与垂直堆栈视图内另一个视图的底部对齐

时间:2019-07-01 09:08:54

标签: ios swift autolayout constraints

我在垂直堆栈视图中附加了标签和图像。我希望它们以堆栈视图为中心,但不能更大。我还希望标签的顶部与图像的底部对齐。

我尝试了那些约束条件:

screenshot

但是标签粘贴在堆栈视图的底部。

我也尝试过:

NSLayoutConstraint(item: stackView,
    attribute: .top,
    relatedBy: .greaterThanOrEqual,
    toItem: contentView,
    attribute: .top,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: stackView,
    attribute: .bottom,
    relatedBy: .greaterThanOrEqual,
    toItem: contentView,
    attribute: .bottom,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: stackView,
    attribute: .left,
    relatedBy: .greaterThanOrEqual,
    toItem: contentView,
    attribute: .left,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: stackView,
    attribute: .right,
    relatedBy: .greaterThanOrEqual,
    toItem: contentView,
    attribute: .right,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: stackView,
    attribute: .centerX,
    relatedBy: .equal,
    toItem: contentView,
    attribute: .centerX,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: stackView,
    attribute: .centerY,
    relatedBy: .equal,
    toItem: contentView,
    attribute: .centerY,
    multiplier: 1,
    constant: 0).isActive = true

NSLayoutConstraint(item: imageView,
    attribute: .height,
    relatedBy: .equal,
    toItem: stackView,
    attribute: .height,
    multiplier: 0.5,
    constant: 0).isActive = true

但是现在图像的顶部固定在内容视图顶部的顶部,标签的底部固定在内容视图底部的底部。

1 个答案:

答案 0 :(得分:0)

一个UIStackView 安排其子视图

在您的情况下,您有一个UIImageView和一个UILabel作为垂直堆栈视图的排列子视图。因此,标签将始终始终位于图像视图下方。

我假设您还有其他视图要添加到堆栈视图中-如果是这样,

  • 要使标签与图像视图“顶部对齐”,请将标签和图像视图均嵌入新的UIView中,设置约束以将标签固定在顶部,然后添加{{ 1}}移至您的堆栈视图。

否则,

  • 您可能根本不想使用堆栈视图。