为啥图像视图会拉伸以填充 UIStackView 中宽度的一半?
Posted
技术标签:
【中文标题】为啥图像视图会拉伸以填充 UIStackView 中宽度的一半?【英文标题】:Why is image view stretching to fill half the width in a UIStackView?为什么图像视图会拉伸以填充 UIStackView 中宽度的一半? 【发布时间】:2017-04-15 15:13:28 【问题描述】:我在水平堆栈视图的左侧使用 UIImageView
和行数设置为 0 的标签。问题是 UIImageView
和标签都填充了相等的空间,即使我已经设置要填充的堆栈视图分布属性。我不希望我的图像视图扩大。改变内容拥抱没有帮助。
【问题讨论】:
【参考方案1】:问题是:当告诉堆栈视图填充内容区域时,它会尽量做到最好。将分发类型设置为fill
时不知道如何填写。您必须通过图像的自动布局设置宽度约束来提供此信息。然后标签将填充剩余的区域。
【讨论】:
【参考方案2】:另一种方法是在图像+标签堆栈的右侧添加一个不可见的间隔对象。
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
【讨论】:
以上是关于为啥图像视图会拉伸以填充 UIStackView 中宽度的一半?的主要内容,如果未能解决你的问题,请参考以下文章
UIStackView 的子视图具有固有大小,但仍然忽略包含优先级的内容
如何用图像作为背景填充 iOS 堆栈视图(UIStackView)?