iOS 去掉导航栏返回按钮的标题
Dec 5, 2021 — iOS
导航栏返回按钮的标题是前一个 View Controller 的 title,但是设计 App 时基本上只保留箭头,所以这个标题很鸡肋。
如果前面一个 View Controller 的 navigationItem.title:
- 为空:显示箭头 + “Back”
- 不为空:
- 当前界面标题能显示完全 :显示箭头 + 前一个界面的标题
- 当前界面标题过长,会隐藏前一个界面的标题:显示箭头 + “Back”
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -1000.0, vertical: 0.0), for: .default)这里的**-1000.0**,是为了考虑平板的横屏方向。
缺点:返回时,前一个界面的标题是从左 👉🏻 右嗖的一下闪过,不是默认的渐变效果
通过借助 Aspects (opens in a new window) 在 UIViewController 的 viewDidLoad里面修改。
这里有三种方式,对应不同的系统版本。
override func viewDidLoad() { super.viewDidLoad()
// 1 if #available(iOS 14.0, *) { navigationItem.backButtonDisplayMode = .minimal } // 2 else if #available(iOS 11.0, *) { navigationItem.backButtonTitle = "" } // 3 else { navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) }}第 2 和第 3 种其实是一样的效果,只用第 3 种方式也可以替代第 2 种,只不过第 2 种是 iOS 11 自带的属性。
最开始我是用到第 3 种,但这两种方式在 iOS 13 还是 14 之后的版本上,有点体验不好的就是:长按返回按钮时无法显示标题列表。
比如进入到很深的一个详情界面,比如 5 级,我要立马回到第 2 级界面,就可以长按返回按钮,系统会列出前面所有的界面的标题,然后你移动到对应标题就会返回到那个界面。
第 1 种就不会出现这种情况。