Adr*_*ian 101 uiscrollview ios swift uistackview
这是我的设置:我有一个UIScrollView
领先的,顶部的,试验边缘设置为0.在此我添加一个UIStackView
有这个约束:
stackView.centerYAnchor.constraintEqualToAnchor(selectedContactsScrollView.centerYAnchor).active = true
stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true
Run Code Online (Sandbox Code Playgroud)
在堆栈视图中,我添加了一些视图.
我的问题是,由于约束,添加到堆栈视图的第一个视图也将具有前沿= 0.
我可以在第一个视图中添加一些填充的方法是什么?无需调整滚动视图约束.
Tol*_*kur 333
当isLayoutMarginsRelativeArrangement
property为true时,堆栈视图将相对于其布局边距布置其排列的视图.
stackView.layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
stackView.isLayoutMarginsRelativeArrangement = true
Run Code Online (Sandbox Code Playgroud)
但它会影响堆栈视图内部的所有排列视图.如果只想为一个排列的视图填充此填充,则需要使用嵌套UIStackView
Zap*_*ndr 141
我发现约束在Stack View中不起作用,或者它们看起来有些奇怪.
(例如,如果我在图像堆栈视图中添加了前导/尾随约束,那么也会添加导致到集合视图,但不会添加尾随;并且肯定会发生冲突).
要为stackview中的所有视图设置布局边距,请选择:
Stack View > Size Inspector > Layout Margins > Fixed
注意:"Fixed"
之前调用选项"Explicit"
,如屏幕截图所示.
然后添加填充:
Wil*_*aan 24
您提供的解决方案不会在UIStackView中为您的视图添加填充(正如您在问题中所希望的那样),但它为UIStackView添加了一个前导.
一个解决方案可能是在原始的UIStackView中添加另一个UIStackView,并提供这个新的UIStackVIew.然后,将您的视图添加到这个新的UIStackView.
提示,您可以使用Interface Builder完全完成.换句话说,不需要为它编写代码.
dor*_*rsz 15
对我有用的是添加到堆栈视图另一个UIView,它只是一个spacer(至少与stackView.distribution = .Fill一起工作):
let spacerView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
stackView.addArrangedSubview(spacerView)
stackView.addArrangedSubview(viewThatNeedsSpaceBeforeIt)
stackView.addArrangedSubview(NextView)...
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您只需要前导填充,那么您可以将堆栈视图的对齐设置为“尾随”,然后您就可以自由地在其包含的每个子视图上指定唯一的前导约束。
作为奖励,您还可以将堆栈视图的对齐方式设置为“居中”,然后您可以使用前导和/或尾随约束为每个项目在两侧提供自己的填充。
迅捷3:您只需要设置偏移量即可:
firstView.leadingAnchor.constraint(equalTo: parentView.leadingAnchor, constant: 200).isActive = true
Run Code Online (Sandbox Code Playgroud)
确保在您之后设置此约束 parentView.addArrangdSubView(firstView)
归档时间: |
|
查看次数: |
65881 次 |
最近记录: |