2017-09-25 1 views
0

J'ai ce code afin de mettre un UIImageView au centre d'une barre de contrôle de la navigation et l'échelle correctement l'image:mode du réglage en UIImageView ne fonctionne plus dans 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; 
} 

Le code fonctionne très bien dans iOS 10, mais dans iOS 11, la propriété ".scaleAspectFit" n'est pas prise en compte et les images ne sont pas mises à l'échelle dans la taille UIImageView.

J'ai essayé quelques solutions i trouvée:

  • Définition du cadre de la UIImageView après avoir réglé le "contentMode" propriété
  • Réglage imageView.setNeedsLayout()
  • Réglage imageView.setNeedsDisplay()

Malheureusement, aucune de ces solutions ne fonctionne. La propriété "contentMode" est simplement ignorée,

Une idée sur ce que le problème pourrait être?

Nous vous remercions à l'avance

+0

Qu'avez-vous essayé de résoudre votre problème? – Shebuka

+0

cela peut-il vous aider: https://stackoverflow.com/a/44040208/5580393 – Aditya

+0

Salut Shebuka, j'ai essayé avec quelques solutions proposées j'ai trouvé: . définir l'image de l'image après avoir défini la propriété "contentMode" . définition de imageView.setNeedsLayout() . définition de imageView.setNeedsDisplay() aucune de ces solutions ne fonctionne. La chose étrange est que mon code fonctionne bien dans iOS 10 ... –

Répondre

0

Works pour moi de telle manière (à l'aide UIView supplémentaire)

 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

Cela fonctionne! Merci beaucoup nerowolfe! Une idée de pourquoi l'intégration de UIImageView dans un UIView résout le problème? –

+0

Je ne peux pas supposer que la barre de navigation se comporte maintenant autrement que d'habitude UIView – nerowolfe

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