【发布时间】:2017-06-09 12:05:02
【问题描述】:
我有 UIStackView 并想在这个视图中添加一些排列的视图......有时是一个,有时是两个,三个......等等。 UIStackView 有全宽。我希望排列的视图具有相同的宽度,左对齐,这样它们就不会填满 UIStackView 的整个宽度。
这就是我所拥有的:
这就是我想要的:
是否有可能以某种方式做到这一点,或者我是否需要根据我添加的排列数量来更改 UIStackVIew 的宽度?
我的代码:
// creating views
stackView = {
let v = UIStackView()
v.axis = .horizontal
v.alignment = .center
v.distribution = .fillEqually
v.spacing = 5
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
if let img = chosenImage {
let imageView: UIImageView = {
let l = UIImageView()
l.translatesAutoresizingMaskIntoConstraints = false
l.image = img
return l
}()
self.stackView?.addArrangedSubview(imageView)
imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .width, relatedBy: .equal, toItem: imageView, attribute: .height, multiplier: 1, constant: 1))
imageView.setNeedsUpdateConstraints()
} else {
print("Something went wrong")
}
【问题讨论】:
-
如何指定视图的宽度?是固定值吗?
-
@UpholderOfTruth 我已将代码示例添加到我的问题中。
-
这行不通。您已设置堆栈视图,使其排列的视图以 5pt 间距均匀填充。然后对于图像,您将高度设置为等于宽度 + 1pt。所以宽度将通过划分堆栈视图的宽度来确定,然后相应地调整高度。我认为最好的方法已经添加了更清晰的视图和内容拥抱和抵抗。
标签: ios swift uistackview