Swift 4.2 Xcode中视图隐藏后布局错位问题求助
解决iOS隐藏视图后多余间距&左对齐问题
Hey there! 作为iOS开发新手碰到这种布局小坑太正常了,我给你整理几个实用的解决思路,还有方便你自行深挖的搜索关键词:
一、最省心方案:用UIStackView搞定
如果你的SS视图、姓名、科目控件是放在UIStackView里的,那问题就简单了:
- 先确认StackView的
alignment设置为.leading(保证所有子控件左对齐),spacing设成你想要的控件间距离; - 隐藏SS视图时,直接写
ssView.isHidden = true就行——StackView会自动把后面的姓名、科目控件左移,不会留下多余的空白间距,完美实现左对齐。
二、手动Auto Layout约束调整(适合不用StackView的场景)
如果是手动给控件加的约束,大概率是姓名控件的leading约束依赖了SS视图的trailing,导致SS隐藏后约束还在生效,留了空白。可以这么改:
- 给姓名控件加两个leading约束:
- 一个是姓名.leading = SS.trailing + 间距,优先级设为1000(最高);
- 另一个是姓名.leading = 父视图.leading + 间距,优先级设为750(低于前者);
- 当你隐藏SS视图时,高优先级的约束会失效,系统会自动启用低优先级的约束,姓名就会自动左对齐父视图啦。
或者你也可以在代码里动态修改约束:隐藏SS时,移除原来依赖SS的leading约束,添加上依赖父视图的约束,然后调用view.layoutIfNeeded()刷新布局。
三、实用搜索关键词(方便你深挖细节)
iOS hide view remove extra spacing auto layoutUIStackView hidden view spacing behavioriOS dynamic leading constraint priority when view hidden
内容的提问来源于stack exchange,提问作者Noorul
相关产品推荐
相关产品推荐

