1

在我的应用程序中,我想将导航控制器的 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() 每次都具有完全相同的结果...

你能帮助我吗?

4

0 回答 0