取消隐藏后如何为Stack View的子项保留约束?

问题描述 投票:0回答:1

有一个包含三个标签并具有以下约束的堆栈视图:

  • 高度= 300
  • 顶部=安全区域+ 50
  • 尾随/前导= 0

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS90YkI5Mi5wbmcifQ==” width =“ 672” alt =“ storyboard”>

和以下属性:

  • 轴->垂直
  • 对齐->居中
  • 分布->等距

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9qdzQ0UC5wbmcifQ==” width =“ 256” alt =“堆栈视图属性”>

标签3(蓝色)有一个变化:对于紧凑高度尺寸类,已安装属性已禁用(通过属性检查器配置)。这使其隐藏在iPhone的水平方向上:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS94Y2NOQS5wbmcifQ==” width =“ 148” alt =“已安装紧凑型高度特征的” >>

启动应用程序时,所有标签在屏幕上的位置均正确。旋转到水平方向并返回后,将标签3放置在堆栈视图的左上角,同时其他标签正确对齐:

“旋转后的应用”

Xcode View Hierarchy调试器显示,重新出现Label 3之后,没有任何与UIStackView相关的约束,并且其旁边的警告显示“位置不明确”:]]

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9iRXlZWi5wbmcifQ==” width =“ 468” alt =“标签3的初始约束”>“缺少标签3的约束”“ >>

[Label 3在被隐藏并再次显示后,似乎失去了与堆栈视图有关的所有约束。

有一个包含三个标签并具有以下约束的堆栈视图:高度= 300顶部=安全区域+ 50尾随/前导= 0和以下属性:轴->垂直对齐-> ...

ios autolayout uistackview
1个回答
0
投票
您不能为此使用installed属性,因为这会向超级视图添加/删除视图。对于StackView,这还不够好,因为它要求使用addArrangedSubview()添加子视图。

一种简单的解决方案是为标签创建一个出口,并在旋转时隐藏/显示它:

© www.soinside.com 2019 - 2024. All rights reserved.