gpt4 book ai didi

Swift UIStackView - 以编程方式动态 View 高度单元格之间的大间距

转载 作者:行者123 更新时间:2023-11-30 12:32:00 28 4
gpt4 key购买 nike

enter image description here

我正在以编程方式使用 UIStackView,以在给定位置动态插入表单。按下按钮并将 UIView 插入到 0 个位置。当用户单击表单上的“保存”时,约束将被删除,单元格将被删除,然后替换为显示 UIView。替换 UIView 的高度可以根据从表单内部记录的文本量而变化。

我遇到的问题是,当第一个单元格输入长文本而第二个单元格输入短文本时,这两个单元格不齐平。如果高度相同,则不会发生这种情况。因此,如果第一个单元格的高度与第二个单元格的高度相等,则所有三个单元格将在顶部齐平显示。

上图显示了我的问题以及我希望实现的目标。我该如何解决这个问题?

此外,我看到以下关于我的限制的输出:

LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x61000028ac80 MyApp.StepView:0x7fdf4b74b360.height == 166 (active)>",
"<NSLayoutConstraint:0x6100002870d0 MyApp.StepView:0x7fdf4b678da0.height == 166 (active)>",
"<NSLayoutConstraint:0x61000028db10 'UISV-canvas-connection' UIStackView:0x7fdf4e8012d0.top == MyApp.StepView:0x7fdf4b74b360.top (active)>",
"<NSLayoutConstraint:0x610000289d80 'UISV-canvas-connection' V:[MyApp.StepView:0x7fdf4b678da0]-(0)-| (active, names: '|':UIStackView:0x7fdf4e8012d0 )>",
"<NSLayoutConstraint:0x61000028a820 'UISV-spacing' V:[MyApp.StepView:0x7fdf4b74b360]-(15)-[MyApp.StepView:0x7fdf4b678da0] (active)>",
"<NSLayoutConstraint:0x61800009acc0 'UIView-Encapsulated-Layout-Height' UIStackView:0x7fdf4e8012d0.height == 770 (active)>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x6100002870d0 MyApp.StepView:0x7fdf4b678da0.height == 166 (active)>

这是一个非常自定义的设计,与典型的移动布局完全不同。我想知道放弃 UIStackView 并使用约束是否会更好。我想到了 UIStackView,因为我希望能够添加/删除元素并自动调整大小。

最佳答案

我找到了一种通过测量堆栈 View 中的所有单元格来获得所需结果的方法。如果该值小于 500,我会将一个空白单元格插入堆栈顶部。这确保了所有其他单元格看起来都对齐。

由于我基本上每次都会重建 StackView,因此这种方法最有意义。

关于Swift UIStackView - 以编程方式动态 View 高度单元格之间的大间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com