如何将iPhone应用背景视图置于最底层,使其他UI元素正常显示?
解决背景视图覆盖其他UI元素的问题
哈哈,这个坑我之前也踩过!背景视图层级搞反挡住其他元素太常见了,给你两种最常用的解决办法,看你是用可视化界面还是代码实现的:
如果你用 Storyboard/XIB(可视化界面)
- 打开你的界面文件,找到左侧的 Document Outline(就是显示所有视图层级的面板)
- 在里面找到你的背景视图,选中它之后:
- 右键点击,选择 Arrange > Send to Back;或者直接把它拖到Outline列表的最底部(列表里的顺序就是视图层级,最底部的视图在最底层)
- 也可以用顶部菜单栏的 Editor > Arrange > Send to Back 来操作
如果你用代码创建视图(UIKit)
有几种灵活的方式,选适合你的就行:
- 直接把背景视图移到父视图最底层:
// 假设你的背景视图是backgroundView,父视图是self.view self.view.sendSubviewToBack(backgroundView) - 一开始添加背景视图时就放在最底层(推荐这种,避免后续层级混乱):
// 插入到子视图数组的索引0位置,索引越小层级越低 self.view.insertSubview(backgroundView, at: 0) - 如果想把背景视图放在某个特定UI元素的下方:
// 比如要放在titleLabel的下面 self.view.insertSubview(backgroundView, belowSubview: titleLabel)
小提示:如果是SwiftUI的话,只需要保证背景视图在ViewBuilder里的顺序是第一个(SwiftUI的视图顺序就是层级,先写的在底层),比如:
ZStack { Color.blue // 背景视图,先写的在最底层 Text("Hello World") // 会显示在背景上面 }
内容的提问来源于stack exchange,提问作者S.Benten
相关产品推荐
相关产品推荐

