设定内容模式的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”属性简单地被忽略,
有什么问题可能是什么?
预先感谢您
答
工作对我来说你尝试过什么解决你的问题,这样的方式(使用额外的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
? – Shebuka
可能会帮助你:https://stackoverflow.com/a/44040208/5580393 – Aditya
嗨Shebuka,我尝试了一些建议的解决方案,我发现: 。在设置“contentMode”属性 后设置图像的框架。设置imageView.setNeedsLayout() 。设置imageView.setNeedsDisplay() 这些解决方案中没有一个适用。奇怪的是,我的代码在iOS 10中工作正常... –