UIBarButtonItem删除后退按钮标题 – iOS 11
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default)
我使用上面的backButtonTitle
在iOS 11之前删除backButtonTitle
但是在iOS 11上没有正常工作。 箭头向下移动。 如何解决这个问题?
编辑:通过删除标题的其他方式可以解决我的问题,但我担心的是为什么旧的方式不再工作。
另一种方法是为navigationController设置UINavigationControllerDelegate
并删除其函数中的标题。
class NoBackButtonTitleNavigationDelegate: UINavigationControllerDelegate { func navigationController( _ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool ) { viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) } }
使用此代码,
var newBackButton = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: self, action: #selector(self.back)) navigationItem?.leftBarButtonItem = newBackButton
创建导航控制器类,如下所示。 将此“CustomNavViewController”分配给StoryBoard中的UINavigationController
class CustomNavViewController: UINavigationController,UINavigationControllerDelegate { override func viewDidLoad() { super.viewDidLoad() self.delegate = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func navigationController( _ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool ) { viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) }
}
因此,无需在每个viewControllers中执行此操作。 最后从AppDelegate类中删除以下行,如果存在,
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default)
而不是垂直移动标题,您可以水平移动。 如果标题很长,你可以使它的颜色透明。 工作得很好我:
let barButtonItemAppearance = UIBarButtonItem.appearance() barButtonItemAppearance.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.clear], for: .normal) barButtonItemAppearance.setBackButtonTitlePositionAdjustment(UIOffsetMake(-200, 0), for:UIBarMetrics.default)