Ios 为什么图像视图会拉伸到视图宽度的一半?

Ios 为什么图像视图会拉伸到视图宽度的一半?,ios,xcode,uiimageview,uilabel,uistackview,Ios,Xcode,Uiimageview,Uilabel,Uistackview,我正在水平堆栈视图左侧拍摄一个UIImageView,并拍摄一个行数设置为0的标签。问题是,UIImageView和标签都填充了相等的空间,即使我已经将stack-view-distribution属性设置为fill。我不希望图像视图展开。更改内容拥抱没有帮助。问题是:当告诉堆栈视图填充内容区域时,它会尽力做到最好。将分发类型设置为fill时,它不知道如何填充。必须通过图像的自动布局设置宽度约束来提供此信息。标签将填充剩余区域 另一种方法是在图像+标签堆栈的右侧添加一个不可见的间隔对象 priv

我正在水平堆栈视图左侧拍摄一个
UIImageView
,并拍摄一个行数设置为0的标签。问题是,
UIImageView
和标签都填充了相等的空间,即使我已经将stack-view-distribution属性设置为fill。我不希望图像视图展开。更改内容拥抱没有帮助。

问题是:当告诉堆栈视图填充内容区域时,它会尽力做到最好。将分发类型设置为
fill
时,它不知道如何填充。必须通过图像的自动布局设置宽度约束来提供此信息。标签将填充剩余区域


另一种方法是在图像+标签堆栈的右侧添加一个不可见的间隔对象

private func spacer() -> UIView {
    let stretchingView = UIView()
    stretchingView.setContentHuggingPriority(.defaultHigh, for: .horizontal)
    stretchingView.backgroundColor = UIColor.clear
    stretchingView.translatesAutoresizingMaskIntoConstraints = false
    return stretchingView
}

private func labelWithImage() -> UIView {
    let image = UIImage(systemName: "map")
    let imageView = UIImageView(image: image)
    let label = UILabel()
    label.text = "3 Miles Away"
    label.font = UIFont.systemFont(ofSize: 17, weight: .regular)
    label.textColor = UIColor.gray
    let stackView = UIStackView(arrangedSubviews: [imageView, label, spacer()])
    stackView.alignment = .leading
    stackView.axis = .horizontal
    return stackView
}