![](/img/trans.png)
[英]UIViewAutoresizingMask expands subview width beyond superview's bounds
[英]How do I create a SubView that pops up dynamically and expands it's superview size. (in code)
所以我目前有一个UIView
子类叫做:“ InputView
”有两个子视图,一个UILabel
和一个UITextField
。 我设置的方式是我可以更改标签和文本字段占位符,以便此InputView
可以作为我的应用程序中任何输入字段的模块化组件(电子邮件,密码等)。我所要做的就是创建我的故事板中的空UIView
,将它的类设置为InputView
,其余的以编程方式完成。
现在,我遇到了一个问题。 InputView
是普通的UIView
,它的约束是在故事板中设置的,但我想添加一个子视图(一个表),当用户编辑UITextField
时,它会动态显示/消失。 每次表格出现时, InputView
在高度上展开,将其下方的所有内容向下推,然后InputView
消失。
我不知道该怎么做。 这是我想到的:
想法1:将表放在视图中,为其添加所有必要的约束,并希望InputView自行扩展。 这导致表格位于InputView
的框架InputView
,因此由于某种原因无法响应用户触摸
想法2:更改InputView
的边界,并将其高度扩展为表格的高度。 这不起作用,因为约束是在故事板中设置的,我无法以编程方式访问它们
想法3:经过近5个小时的研究和尝试失败后,转到StackOverflow,看看是否有人知道如何修复它。 (谢谢!)
您可以进行设置,以便可以通过编程方式更改故事板约束。
1)在故事板中,为inputView设置一个高度约束,并将其设置为当表不可见时有意义的值 - 可能在30左右。(您可能已经这样做了。)
2)然后通过控制将该高度约束拖动到与其中包含inputView的视图控制器对应的文件,为代码创建一个插座。 对话框将提示您在代码中为插座指定名称。 称之为inputViewHeightConstraint
。
3)然后在您的代码中,当您想使inputView具有更大的高度时,将inputViewHeightConstraint.constant
设置为新值。 请注意,您需要引用.constant以设置约束的新高度。
首次为inputView设置高度约束时,请确保使其为“等于”约束(例如,其高度等于30),而不是“大于或等于”约束。 即使后者更有意义,因为你将在代码中将其更改为更大的价值,我发现这种方法存在缺陷。 使它成为一个直接的“等于”约束更加干净。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.