Swift 4 / XCode 9 / iOS 11上页眉标志大小有误

3

我刚刚将XCode更新到9版本,但是在没有做任何大的修改的情况下运行我的项目时,标题标志的大小已经增加以填充标题。 在升级之前,它的大小约为导航栏的50%,就像我想要的那样。

我定位标志的代码如下:

//Logo on NavBar
        let logo = UIImage(named: "logo.png")
        let imageView = UIImageView(image:logo)
        imageView.height = (self.navigationController?.navigationBar.height)! - 25
        imageView.contentMode = .scaleAspectFit
        self.navigationItem.titleView = imageView

这是标志的原始(和预期)外观:

enter image description here

在XCode更新后,它的外观变成了这样:

enter image description here

你有任何想法为什么会发生这种情况吗?


1
这可能会有所帮助 https://dev59.com/HlcP5IYBdhLWcg3wDWVq#46275449 - Flexicoder
你能设置 imageView.height 吗?它没有报错吗? - Vini App
没有错误。它编译并运行。 - Jacobo Koenig
2个回答

2

我曾经遇到过相同的问题 - 只出现在iOS 11上。 因此,我通过编程方式为ImageView设置了高度和宽度约束。

imageView.widthAnchor.constraint(equalToConstant: YOUR_WIDTH).isActive = true
imageView.heightAnchor.constraint(equalToConstant: YOUR_HEIGHT).isActive = true

这个很好用,而且不需要添加子视图或使用故事板!谢谢。 - mintwhip

1
要在iOS 11中实现相同效果,需在titleView中添加一个子视图,并根据需要调整其大小。
let imagen = UIImageView(frame: CGRect(x: -view.view.frame.width/3, y: -(view.navigationController?.navigationBar.frame.height)! / 2, width: view.view.frame.width/1.5 , height: (view.navigationController?.navigationBar.frame.height)!))
imagen.image = #imageLiteral(resourceName: "logo")
view.navigationItem.titleView = UIView()
view.navigationItem.titleView?.addSubview(imagen)

请问您能否编辑您的答案,使得x和y为0,并将其中心点设置为titleview的中心点?这样大小就可以是我选择的任何大小。 - Jacobo Koenig
使用该代码可将UIImageView居中对齐。请根据您的情况更改变量。 - Raffista
我也有同感...但是当我缩小尺寸时,它就不再是这样了。在额外的调用上居中是一种确保它正确显示的方法,无论人们选择什么大小。此外,它应该是scaleToFit,这样logo就可以正确地按比例显示,而不管其纵横比如何。 - Jacobo Koenig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接