74 votes

iOS 11 navigationItem.titleView Width Not Set

Voir un comportement sur iOS11 avec un navigationItem.titleView où la largeur de la titleView n'est pas la totalité de la largeur de l'écran.

J'ai une vue personnalisée qui-je définir comme la titleView. Précédente à iOS11 le point de vue de remplir la barre de navigation de la zone. Mais iOS 11 il n'est pas de redimensionnement pour remplir la largeur de l'écran.

J'ai essayé le cadre de la vue avant de titleView mais pas de chance. J'ai essayé de forcer le titleViews superview à des contraintes de mise en forme, mais pas de chance.

Les captures d'écran ci-jointe:

iOS10:

enter image description here

iOS11:

enter image description here

Quelqu'un d'autre l'expérience de cette?

136voto

gngrwzrd Points 740

J'ai pensé à elle. J'ai dû remplacer la intrinsicContentSize de lecture pour la vue, et le champ de texte.

J'ai défini la largeur de CGFloat.greatestFiniteMagnitude donc ça va toujours être aussi large que l'écran.

Mise à jour:

Depuis que j'ai passé quelques heures sur ce problème, l'espoir que quelque chose va rattraper plus vite en ayant toutes les choses serrées ensemble

J'ai créé une sous classe de TitleView, appelés CustomTitleView, voici le code:

import UIKit

class CustomTitleView: UIView {

  override var intrinsicContentSize: CGSize {
    return UIView.layoutFittingExpandedSize
  }
}

et la partie la plus importante qui me manquait depuis le début, était ceci:

enter image description here

44voto

João Nunes Points 565

En utilisant la réponse de @ falkon, voici le code:

Ajouter ce code à la vue utilisée comme titleView

 override var intrinsicContentSize: CGSize {
    return UILayoutFittingExpandedSize
} 
 

16voto

Alex Kosyakov Points 1271

Corrigé en créant une sous-classe de UIView et en l'affectant à une vue de titre de UINavigationController

Objectif c:

 #import "FLWCustomTitleView.h"

@implementation FLWCustomTitleView

- (CGSize )intrinsicContentSize {
  return UILayoutFittingExpandedSize;
}

@end
 

entrez la description de l'image ici entrez la description de l'image ici

12voto

falkon Points 720

régler intrinsicContentSize à UILayoutFittingExpandedSize fonctionne bien aussi

7voto

Yedy Points 1165

Je devais adapter un UIImageView en tant que navigationItem.titleView. Le rapport d'aspect était correct, mais IntrinsèqueContentSize l'a rendu trop grand. La mise à l'échelle de l'image entraînait une qualité d'image médiocre. La mise en place des ancres a fonctionné pour moi:

 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 30)];
[imageView setImage:image];
[imageView.widthAnchor constraintEqualToConstant:80].active = YES;
[imageView.heightAnchor constraintEqualToConstant:30].active = YES;
[imageView setContentMode:UIViewContentModeScaleAspectFit];
self.navigationItem.titleView = imageView;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X