Swift开发UIScrollView滚动时内容被截断 父视图遮挡问题咨询
UIScrollView滚动内容被截断问题解决方案
你排查到的Booking DetailsSV被其父视图Booking Details View遮挡的情况属于异常布局问题,是导致滚动时内容被截断的直接原因。点击价格抽屉后内容恢复正常是因为抽屉弹出触发了视图临时重绘,滚动回顶部后系统恢复原有布局规则渲染,就再次出现裁剪问题。
解决方案
- 关闭父视图裁剪属性
打开Storyboard选中Booking Details View,在属性检查器中取消勾选Clips To Bounds选项;如果是代码控制的视图,添加代码:bookingDetailsView.clipsToBounds = false - 修正ScrollView约束配置
确认Booking DetailsSV的上下左右四条约束均绑定到父视图Booking Details View的对应边,而非安全区或其他同级控件,保证ScrollView的显示范围完全匹配父视图的可用区域。 - 校验内容容器约束
你使用UIStackView作为ScrollView的内容容器,需要确认两个约束规则:- UIStackView的上下左右四条约束绑定到UIScrollView的
Content Layout Guide对应边 - UIStackView的宽度与UIScrollView的
Frame Layout Guide宽度相等
配置完成后StackView的高度会由内部子控件自动撑开,系统会自动计算ScrollView的contentSize,无需手动设置固定值。
- UIStackView的上下左右四条约束绑定到UIScrollView的
- 调整视图层级顺序
确认Booking DetailsSV在父视图的子视图层级中处于最顶层,避免被父视图内的其他同级子控件遮挡。在Storyboard左侧的视图列表中,子视图的排列越靠下,实际渲染层级越高,直接拖拽调整顺序即可。
内容的提问来源于stack exchange,提问作者Siow Johnson
相关产品推荐
相关产品推荐

