UIStackView 调整我的视图大小

Posted

技术标签:

【中文标题】UIStackView 调整我的视图大小【英文标题】:UIStackView resizing my views 【发布时间】:2017-06-12 13:51:09 【问题描述】:

我正在制作一个自定义键盘,并且想要一个标签和一个文本字段在键盘上方的空间中居中,我认为正确的方法是将它们合并到 UIstackView 中,然后将堆栈居中。但是,我在调整我的 textField 大小的堆栈时遇到了一些问题,导致我输入的任何文本都被剪切。

我尝试添加抗压性和许多不同的解决方案,但我很清楚我错过了一些关于 UIStackViews 如何工作的信息。通常我让它们工作,但我不明白整个调整大小的部分。

前两个屏幕没有堆栈,将它们作为子视图添加到 viewcontrollers 视图,第二个屏幕截图显示堆栈视图在每次键盘退出时调整我的文本字段的大小。

如何阻止 stackview 调整其包含的视图的大小?

【问题讨论】:

【参考方案1】:

似乎 UIStackView 本质上是一个自动布局组件,当它添加您排列的子视图时,它会使用约束自动定位它们。

由于 UIStackView 正在添加自己的约束,而我发现阻止它的最佳方法是简单地显式设置子视图约束:

textField.widthAnchor.constraint(equalToConstant: 300).isActive = true

【讨论】:

【参考方案2】:

Apple 不喜欢动态 StackViews:“一般来说,您不应该使用动态堆栈视图来简单地实现临时构建的表视图克隆。”阅读 Apple Documentation on UIStackView了解详情。

【讨论】:

以上是关于UIStackView 调整我的视图大小的主要内容,如果未能解决你的问题,请参考以下文章

UIStackView 内的视图未使用 AutoLayout 调整大小

如何在 Xcode 中调整 UIStackView 的子视图大小?

使用 AutoLayout 调整 UIStackView 的大小

当 UIStackView 更改其排列的子视图时,UITableViewCell 不会调整大小

查找由 UIStackView swift 调整的视图的大小

为啥 UIStackView 调整排列的子视图的大小?