有一个包含三个标签并具有以下约束的堆栈视图:
<< 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的初始约束”>“ >>
[Label 3在被隐藏并再次显示后,似乎失去了与堆栈视图有关的所有约束。
有一个包含三个标签并具有以下约束的堆栈视图:高度= 300顶部=安全区域+ 50尾随/前导= 0和以下属性:轴->垂直对齐-> ...
installed
属性,因为这会向超级视图添加/删除视图。对于StackView,这还不够好,因为它要求使用addArrangedSubview()
添加子视图。一种简单的解决方案是为标签创建一个出口,并在旋转时隐藏/显示它: