代码之家  ›  专栏  ›  技术社区  ›  Andrea Gorrieri

在iOS 11中,在UIImageView中设置内容模式不再有效

  •  1
  • Andrea Gorrieri  · 技术社区  · 7 年前

    我使用此代码是为了将UIImageView放置在导航控制器栏的中心,并适当缩放图像:

    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”属性后设置UIImageView的帧

    不幸的是,这些解决方案都不起作用。“contentMode”属性被忽略,

    知道问题出在哪里吗?

    提前谢谢你

    2 回复  |  直到 7 年前
        1
  •  6
  •   nerowolfe    7 年前

    以这种方式为我工作(使用额外的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
    
        2
  •  0
  •   Nilomi Shah    7 年前
        let imageView = UIImageView(image: UIImage(named: "img-logo"))
        imageView.contentMode = .scaleAspectFit
        navigationItem.titleView = imageView