iOS 26 UITabBarController:如何实现全屏TabBar且不显示bottomAccessory?
iOS 16下UITabBar全屏显示且无可见bottomAccessory的解决办法
- 最稳妥的方式是给
UITabBarController设置一个高度为0的透明视图作为bottomAccessory,既触发系统的全屏布局逻辑,又不会产生可见区域:
class CustomTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() let emptyAccessory = UIView() emptyAccessory.backgroundColor = .clear emptyAccessory.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ emptyAccessory.heightAnchor.constraint(equalToConstant: 0) ]) bottomAccessory = emptyAccessory } }
- 另一种思路是直接修改TabBar的布局边距,但这种方式依赖系统布局逻辑,不如前者稳定:
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() tabBar.layoutMargins = .zero tabBar.invalidateIntrinsicContentSize() }
第一种方法利用了系统设置bottomAccessory时的布局规则,通过高度为0的视图让TabBar自动延伸至屏幕边缘,同时完全隐藏accessory区域,不会出现透明但占空间的问题。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

