Swift中NavigationController嵌套UITabBarController后子VC边界出现黑线如何解决

问题原因
这条黑线是iOS系统为UINavigationBar、UITabBar默认添加的阴影分割线,也可能是嵌套容器时布局适配不到位导致的系统描边外露,可以根据黑线出现的位置选择对应方案解决:
解决方法
1. 黑线出现在页面顶部(导航栏下方)
在你初始化导航控制器的代码后添加以下配置,隐藏导航栏阴影:
// 方式1:直接清空阴影和背景图,无系统磨砂效果 tabnavigationController.navigationBar.shadowImage = UIImage() tabnavigationController.navigationBar.setBackgroundImage(UIImage(), for: .default) // 方式2:仅隐藏阴影,保留导航栏默认磨砂效果 tabnavigationController.navigationBar.setValue(true, forKey: "hidesShadow")
2. 黑线出现在页面底部(TabBar上方)
在初始化CircleBarController后添加以下配置,隐藏TabBar阴影:
// 清空TabBar默认阴影与背景 tabbarController.tabBar.shadowImage = UIImage() tabbarController.tabBar.backgroundImage = UIImage() // 额外移除可能存在的自定义图层边框 tabbarController.tabBar.layer.borderWidth = 0 tabbarController.tabBar.layer.borderColor = UIColor.clear.cgColor
3. 两种方案都无效时适配子VC布局
如果黑线是子VC边缘的描边,是布局未延伸到状态栏/导航栏/TabBar下方导致的,给子VC添加布局配置:
override func viewDidLoad() { super.viewDidLoad() // 允许布局延伸到所有系统栏下方 edgesForExtendedLayout = .all // 不透明的系统栏也允许延伸 extendedLayoutIncludesOpaqueBars = true }
内容的提问来源于stack exchange,提问作者user883884
相关产品推荐
相关产品推荐

