Ios 如何创建动态弹出并展开的子视图';s超级视图大小。(以代码形式)

Ios 如何创建动态弹出并展开的子视图';s超级视图大小。(以代码形式),ios,swift,uitableview,uiview,autolayout,Ios,Swift,Uitableview,Uiview,Autolayout,因此,我目前有一个名为“InputView”的UIView子类,它有两个子视图,一个UILabel和一个UITextField。我设置它的方式是,我可以更改标签和文本字段占位符,这样这个InputView就可以作为我应用程序中任何输入字段(电子邮件、密码等)的模块化组件。我所要做的就是在我的故事板中创建一个空UIView,将其类设置为InputView,并以编程方式完成其余的工作 现在,我遇到了一个问题。InputView是普通的UIView,其约束在情节提要中设置,但我想添加一个子视图(表),

因此,我目前有一个名为“
InputView
”的
UIView子类,它有两个子视图,一个
UILabel
和一个
UITextField
。我设置它的方式是,我可以更改标签和文本字段占位符,这样这个
InputView
就可以作为我应用程序中任何输入字段(电子邮件、密码等)的模块化组件。我所要做的就是在我的故事板中创建一个空
UIView
,将其类设置为
InputView
,并以编程方式完成其余的工作

现在,我遇到了一个问题。
InputView
是普通的
UIView
,其约束在情节提要中设置,但我想添加一个子视图(表),每当用户编辑
UITextField
时,该子视图会动态出现/消失。每次表格出现时,
InputView
都会在高度上展开,将其下方的所有内容向下推,然后很整齐地消失

我不知道怎么做。以下是我的想法:

想法1:将表放在视图中,向其添加所有必要的约束,并希望InputView自行扩展。这会导致表格位于
InputView
的框架之外,因此由于某种原因,对用户的触摸没有响应

Idea 2:更改
InputView的边界
并将其高度扩展为表的高度。这不起作用,因为约束是在情节提要中设置的,我无法通过编程方式访问它们


想法3:经过近5个小时的研究和失败的尝试,转到StackOverflow,看看是否有人知道如何修复它。(谢谢!)

您可以进行设置,以便以编程方式更改情节提要约束

1) 在情节提要中,为inputView设置一个高度约束,并将其设置为当表格不可见时有意义的值——可能在30左右。(您可能已经这样做了。)

2) 然后,通过控件将高度约束拖动到与包含inputView的视图控制器对应的文件,创建代码的出口。一个对话框将提示您在代码中为插座命名。将其称为类似于
inputViewHeightConstraint

3) 然后,在代码中,当您想使inputView具有更大的高度时,将
inputViewHeightConstraint.constant
设置为一个新值。注意:您需要参考.constant以设置约束的新高度


首次为inputView设置高度约束时,请确保将其设置为“等于”约束(例如,其高度等于30),而不是“大于或等于”约束。尽管后者更有意义,因为您将在代码中将其更改为更大的值,但我发现这种方法存在缺陷。使其成为一个直接的“等于”约束更为清晰。

您可以设置一些设置,以便以编程方式更改情节提要约束

1) 在情节提要中,为inputView设置一个高度约束,并将其设置为当表格不可见时有意义的值——可能在30左右。(您可能已经这样做了。)

2) 然后,通过控件将高度约束拖动到与包含inputView的视图控制器对应的文件,创建代码的出口。一个对话框将提示您在代码中为插座命名。将其称为类似于
inputViewHeightConstraint

3) 然后,在代码中,当您想使inputView具有更大的高度时,将
inputViewHeightConstraint.constant
设置为一个新值。注意:您需要参考.constant以设置约束的新高度


首次为inputView设置高度约束时,请确保将其设置为“等于”约束(例如,其高度等于30),而不是“大于或等于”约束。尽管后者更有意义,因为您将在代码中将其更改为更大的值,但我发现这种方法存在缺陷。使其成为一个直接的“等于”约束更清晰地工作。

它工作!!对于未来的旅行者,关于如何设置动画(因为为什么你会在没有动画的情况下动态更改它?)祝你好运allIt工作!!对于未来的旅行者,关于如何设置动画(因为为什么在没有动画的情况下动态更改它?)祝你好运