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