设定内容模式的iOS不再起作用11

问题描述:

我有这样的代码,以便把一个的UIImageView在导航控制杆的中心和适当缩放图像:设定内容模式的iOS不再起作用11

override func viewDidAppear(_ animated: Bool) { 

    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 150, height: 28)); 
    imageView.contentMode = .scaleAspectFit; 

    let image = UIImage(named: "image_title.png"); 
    imageView.image = image; 

    self.navigationItem.titleView = imageView; 
} 

中的代码工作正常iOS 10中,但在iOS 11中,“.scaleAspectFit”属性未被考虑,图像未按UIImageView大小缩放。

我尝试了一些解决方案,我发现:)

  • 设置 “contentMode” 属性
  • 设置imageView.setNeedsLayout()
  • 设置imageView.setNeedsDisplay(后设置的UIImageView的框架

不幸的是,这些解决方案中没有一个适用。 “contentMode”属性简单地被忽略,

有什么问题可能是什么?

预先感谢您

+0

? – Shebuka

+0

可能会帮助你:https://stackoverflow.com/a/44040208/5580393 – Aditya

+0

嗨Shebuka,我尝试了一些建议的解决方案,我发现: 。在设置“contentMode”属性 后设置图像的框架。设置imageView.setNeedsLayout() 。设置imageView.setNeedsDisplay() 这些解决方案中没有一个适用。奇怪的是,我的代码在iOS 10中工作正常... –

工作对我来说你尝试过什么解决你的问题,这样的方式(使用额外的UIView)

 let titleView = UIView(frame: CGRect(x: 0, y: 0, width: 120, height: 40)) 
     let image = UIImageView(image: UIImage(named: "img-logo")) 
     image.contentMode = .scaleAspectFit 
     image.frame = titleView.bounds 
     titleView.addSubview(image) 
     viewController.navigationItem.titleView = titleView 
+0

它的工作原理!非常感谢你nerowolfe!任何想法为什么在UIView中嵌入UIImageView解决了这个问题? –

+0

不知道,我只能假设那个导航栏现在的行为方式和通常的UIView – nerowolfe

let imageView = UIImageView(image: UIImage(named: "img-logo")) 
    imageView.contentMode = .scaleAspectFit 
    navigationItem.titleView = imageView