iOS模拟器运行时视图自动意外隐藏问题求助
问题排查与解决
相关截图
界面截图

属性检查器

尺寸检查器

视图调试器

问题描述
编辑器与模拟器所选设备型号一致,但运行应用时,显示结果的视图会意外隐藏,且所有设备尺寸下都存在该问题。已检查约束,无异常、无错误警告。
推测是Stack View的FillProportionally属性导致视图高度被设为0,苹果官方文档说明:
FillProportionally,根据视图的固有尺寸按比例分配空间
怀疑结果视图固有尺寸为0,但未找到解决办法。
原因分析与解决方案
你的推测完全正确,问题根源就是结果视图没有有效固有尺寸——FillProportionally布局逻辑是基于子视图的固有尺寸比例分配空间,当子视图固有尺寸为0时,就会被压缩至完全不可见。
可以通过以下方式解决:
- 为结果视图设置固有尺寸
- 若为自定义View,重写
intrinsicContentSize返回默认尺寸:override var intrinsicContentSize: CGSize { return CGSize(width: UIView.noIntrinsicMetric, height: 120) // 按需调整高度值 } - 若为系统控件(如UILabel、UIImageView),确保控件有内容(文本、图片),系统会自动生成对应固有尺寸。
- 若为自定义View,重写
- 修改Stack View的布局分布
- 将Stack View的
Distribution属性从FillProportionally切换为Fill、EqualSpacing或EqualCentering,这些布局模式不依赖子视图固有尺寸,能直接为子视图分配空间。
- 将Stack View的
- 添加明确的高度约束
- 给结果视图添加固定高度约束,或设置高度的最小/最大值约束,强制Stack View为其保留显示空间。
内容的提问来源于stack exchange,提问作者Yushy
相关产品推荐
相关产品推荐

