在我的应用中,我想将导航控制器的titleView更改为自定义ImageView,但是我遇到了一个非常奇怪的问题。我基本上不能设置ImageView的框架。
这是我的代码:
func NavBarEinrichten(){
let logo = UIImage(named: "Notennamen für Griffe 1")!
let imageView = UIImageView(image:logo)
imageView.contentMode = .scaleAspectFit
//To show the problem better
imageView.backgroundColor = UIColor.red
let navController = navigationController!
let bannerWidth:CGFloat = 20
let bannerHeight:CGFloat = navController.navigationBar.frame.size.height
let bannerX = bannerWidth / 2 - logo.size.width / 2
let bannerY = bannerHeight / 2 - logo.size.height / 2
imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
self.navigationItem.titleView?.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
navigationItem.titleView = imageView
print(imageView.frame, "imageView frame")
}
打印语句打印:
(0.0, 0.0, 357.0, 142.0) imageView frame
这是正确的,因为当我运行它时它看起来像这样,但不应该如此。因为我希望宽度为20。
在模拟器中,它看起来像这样:
我尝试在viewDidLoad()
,viewWillAppear()
和viewDidLayoutSubviews()
中调用此方法
每次都有完全相同的结果...
你能帮我吗?