标题徽标在Swift 4/XCode 9/iOS 11上的大小错误

标题徽标在Swift 4/XCode 9/iOS 11上的大小错误

问题描述:

我刚刚将XCode更新为版本9,并且在没有重大更改的情况下运行我的项目时,标题徽标已增大其大小以填充标题。在升级之前,它的大小按照我的意愿覆盖了导航栏的大约50%。标题徽标在Swift 4/XCode 9/iOS 11上的大小错误

,我定位标识的代码如下:

//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://stackoverflow.com/a/46275449/285190 – Flexicoder

+0

你能设置'imageView.height'吗?它没有给出任何错误? –

+0

没有错误..它编译并运行 –

为了在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) 
+0

你可以请编辑你的答案,使x和y为0,然后等于它的中心titleview?这样的尺寸可以是我选择的任何尺寸。 –

+0

与该代码我得到UIImageView居中。将变量更改为您的案例。 – Raffista

+0

我也是......但是当我缩小尺寸时就不再这样了。以一个额外的电话为中心是一种确保它正确显示的方式,无论人们选择的尺寸如何。此外,它应该是scaleToFit,使徽标是正确的比例,无论其纵横比。 –

我有同样的问题 - 只是出现在iOS的11 所以我给自己定的高度和为ImageView的编程宽度约束。

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

这个工程,真棒,你是一个半神人。 – dan

+0

这很好用,无需添加子视图或使用故事板!谢谢 – mintwhip