UIStackView 调整我的视图

UIStackView resizing my views

我正在制作自定义键盘,并希望在键盘左侧的 space 中居中放置标签和文本字段,我认为正确的方法是将它们合并到 UIstackView 中,然后将堆栈居中.但是,我在调整 textField 大小的堆栈时遇到了一些问题,导致我输入的任何文本都被剪掉了。

我尝试添加压缩阻力和许多不同的解决方案,但我很清楚我缺少有关 UIStackViews 如何工作的一些信息。通常我会让它们工作,但我不明白整个调整大小的部分。

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

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

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

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

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

Apple 不喜欢动态 StackViews:"In general, you should not use dynamic stack views to simply implement a scratch-built table view clone." 阅读 Apple Documentation on UIStackView 了解详情。