方案一:
[UINavigationBar appearance].backIndicatorTransitionMaskImage = [UIImage imageNamed:@"backArrowMask.png"];
[UINavigationBar appearance].backIndicatorImage = [UIImage imageNamed:@"icon_arrowback_n”];
// 這兩個屬性必須同時設置才能生效
方案二:
if (navigationController?.childViewControllers.count ?? 0) > 1 {
navigationItem.leftBarButtonItem = UIBarButtonItem( image: UIImage(named: "ic_back_red"),
style:.plain,
target: self,
action: #selector(backButtonPressed))
}
方案二會導致手勢側滑返回失效行施,解決辦法如下:
class BaseNavgationController: UINavigationController, UIGestureRecognizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
// 自定義的cancelItem需要自己實現(xiàn)手勢返回
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if childViewControllers.count == 1 {
return false
}else {
return true
}
}
}