viewDidLoad:
let width: CGFloat = 100
let ScreenWidth = UIScreen.main.bounds.width
// 第一步,设置 titleView 为一个空白UIView(作背板)
navigationItem.titleView = UIView(frame: Rect(0, 0, ScreenWidth, 44))
// 第二步,这是目标 titleView:
let naviContentView = UIView(frame: Rect((ScreenWidth-width)/2, 30, width, 20))
// 第三步,设置frame。
// 因为要获取titleView的frame,所以必须async执行
//(或者layoutSubviews里执行,就是等0秒让系统自动布局后才能获得frame)
DispatchQueue.main.async {
self.naviContentView.frame = (self.view.window?.convert(self.naviContentView.frame,
to: self.navigationItem.titleView))!
self.navigationItem.titleView?.addSubview(self.naviContentView)
}