Swift UIStackView-动态视图高度以编程方式在单元格之间设置较大间距

Swift UIStackView-动态视图高度以编程方式在单元格之间设置较大间距,swift,uistackview,Swift,Uistackview,我正在以编程方式使用UIStackView,以便在给定位置动态插入表单。按下按钮并将UIView插入0个位置。当用户单击表单上的“保存”时,约束将被删除,单元格将被删除,然后替换为显示视图。根据从表单内部记录的文本量,替换UIView的高度可以是可变的 我遇到的问题是,当第一个单元格输入了长文本,第二个单元格输入了短文本时,两个单元格不齐平。如果高度相同,则不会发生这种情况。因此,如果第一个单元格的高度与第二个单元格的高度相等,则所有三个单元格的顶部将齐平 上图显示了我的问题以及我希望实现的目标

我正在以编程方式使用UIStackView,以便在给定位置动态插入表单。按下按钮并将UIView插入0个位置。当用户单击表单上的“保存”时,约束将被删除,单元格将被删除,然后替换为显示视图。根据从表单内部记录的文本量,替换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)>
LayoutConstraints]无法同时满足约束。
可能下面列表中至少有一个约束是您不想要的。
试试这个:
(1) 看看每一个约束,试着找出你不期望的;
(2) 找到添加了不需要的约束的代码,然后修复它。
(
"",
"",
"",
"",
"",
""
)
将尝试通过打破约束进行恢复

这是一个非常定制的设计,与典型的移动布局完全不同。我想知道我是否应该放弃UIstack视图并使用约束。我想使用stackview,因为我希望能够在调整大小的同时添加/删除元素。

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

因为我每次基本上都在重建StackView,所以这种方法最有意义