2016-12-13 1 views
0

J'essaie de centrer mon titleView dans mon navigationItem. Après localisant mon application, j'ai vu ce comportement:Titre de centrageVoir dans la navigationItem

Before After

Ceci est mon code comme extension à navigationItem:

extension UINavigationItem{ 
func makeImg(){ 


    let container = UIView(frame: CGRect(x: 0,y: 0,width: 200,height: 40)) 
    let logo = UIImage(named: "Rookie") 
    let imageView = UIImageView(frame: CGRect(x: 66.75, y: 7.25, width: 66.5, height: 25.5)) 
    imageView.image = logo 
    imageView.layer.masksToBounds = true 
    imageView.clipsToBounds = true 


    container.addSubview(imageView) 
    self.titleView = container 


} 

} 

Je pense qu'il a quelque chose à voir avec mon Superview en navigationItem. Donc, je devrais faire référence aux limites des écrans. Des idées?

+0

Y at-il une raison particulière que vous enroulez le imageView dans le contenant? Vous pouvez définir l'imageView en tant que titleView directement. – Ryan

Répondre

1

Cela se produit si la vue définie comme titleView est très large. Les vues ajoutées en tant que titleView ne sont redimensionnées que si leur largeur est supérieure à l'espace disponible. Dans ce cas, elles sont redimensionnées pour remplir l'espace entre l'élément de la barre de gauche et l'élément de droite.

Dans ce cas, vous avez défini l'objet container sur 200 points, ce qui est plus large que l'espace disponible pour ces deux éléments.

Si vous définissez la largeur container pour qu'elle corresponde à la vue de l'image (c'est-à-dire 66,5 points), elle doit être centrée. :)

(Ou à l'inverse, si vous ne prévoyez pas d'ajouter d'autres vues, vous pouvez configurer l'affichage d'image directement comme titleView)

+0

a essayé de le faire directement. travaillé comme un charme. Merci beaucoup – JVS

+1

Pas de soucis! Heureux d'avoir pu aider! :) – TiM