如何在viewcontroller视图的坐标系中获取navigationItem的titleView的框架?
if let navBarHeight = navigationController?.navigationBar.frame.height,
let navBarWidth = navigationController?.navigationBar.frame.width {
myCustomTitleView.frame = CGRect(x: 0, y: 0, width: navBarWidth, height: navBarHeight)
navigationItem.titleView = myCustomTitleView
}
但是,当我检查myCustomTitleView的帧起点时,我得到(0,0)。
然后我尝试将此原点转换为viewcontroller的视图。我得到的是(0,-44),它考虑了导航栏的高度,但不考虑x偏移。
let originInVCView = view.convert(myCustomTitleView.frame.origin, from: myCustomTitleView)
这可能不对,因为titleView显然有一个偏移(后退按钮的空间)。
如何正确提取已翻译的titleView原点?
答案 0 :(得分:1)
您要确保首先在viewDidLoad()中设置导航项。否则它将是零。
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView(image: UIImage(named: "MY_IMAGE"))
navigationItem.titleView = imageView
完成后,您可以在VC的viewDidAppear中获取已放置视图的框架:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let nItemFrame = navigationItem.titleView?.frame //<<<---
}