Swift项目中导航控制器关联VC的Footer隐藏与颜色修改问题
嘿,刚好我在Xcode 9+Swift 4.1的项目里折腾过类似的导航栏/底部栏问题,给你梳理下解决方案👇
首先得明确你说的Footer是什么——大概率是UINavigationController自带的底部工具栏(Toolbar),或者是子视图控制器里UITableView的底部脚注。分两种情况处理:
如果是导航控制器的Toolbar:
- 代码全局隐藏:在导航控制器的初始化代码(比如自定义导航控制器子类的
viewDidLoad,或者AppDelegate里)加这段:override func viewDidLoad() { super.viewDidLoad() isToolbarHidden = true // 全局隐藏,所有子VC都生效 } - Storyboard可视化设置:选中你的导航控制器,在右侧属性检查器里找到「Toolbar」选项,取消勾选「Shows Toolbar」即可。
如果是UITableView的Footer:
如果每个子VC里用了表格视图,默认的section footer或者table footer可以这样隐藏:
// 隐藏section footer高度 tableView.sectionFooterHeight = 0 // 隐藏整个表格的底部脚注 tableView.tableFooterView = UIView()
同样分两种场景来说:
如果是导航控制器的Toolbar:
设置颜色后看不到,基本是因为Toolbar默认的半透明背景层遮挡了你的自定义颜色。你需要同时设置barTintColor和关闭半透明:
// 全局设置Toolbar背景色 navigationController?.toolbar.barTintColor = UIColor.orange // 换成你想要的颜色 // 关闭半透明,否则自定义颜色会被默认的透明层冲淡 navigationController?.toolbar.isTranslucent = false
要是还看不到,检查一下子VC里有没有单独设置Toolbar的背景视图,或者子VC的内容视图有没有超出安全区覆盖了Toolbar——可以调整子VC的布局属性:
override func viewDidLoad() { super.viewDidLoad() edgesForExtendedLayout = .top // 让视图只延伸到导航栏底部,不覆盖Toolbar }
另外,如果你要改Toolbar上按钮的颜色,用tintColor:
navigationController?.toolbar.tintColor = UIColor.white
如果是导航栏底部的白色阴影线(常被误认为是Footer):
要是你说的Footer是导航栏下方那条默认的白色分隔线,修改颜色或者隐藏的方法是:
// 修改阴影线颜色 if let shadowView = navigationController?.navigationBar.subviews.first?.subviews.first(where: { $0 is UIImageView }) as? UIImageView { shadowView.backgroundColor = UIColor.blue } // 或者直接隐藏这条线 navigationController?.navigationBar.shadowImage = UIImage() navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
内容的提问来源于stack exchange,提问作者mab
相关产品推荐
相关产品推荐

