2017-10-09 2 views
1

Problèmeimage bouton UIBarButton étirée largeur

Après mise à niveau vers XCode 9 et migration mon code à Swift 4, je suis venu à travers quelques problèmes que je ne m'y attendais. L'une d'entre elles est que la barre de navigation de mon application contient un bouton dans l'emplacement de l'élément de bouton en haut à gauche avec une image, et maintenant l'image (et le bouton) est étirée à mi-chemin de tous les contrôleurs de vue. ne pas). Avant XCode 9, il fonctionnait parfaitement bien, et ce problème ne s'est produit qu'après la mise à jour de XCode.

Ce que j'ai essayé

De this old SO post quelqu'un a posté une réponse récente qui semble suggérer mon problème provient de différentes tailles pour les images en Assets.xcassets, mais je ne comprends pas pourquoi ce serait un problème. J'ai essayé de dupliquer l'image pour le bouton et de le renommer avec "@ 2x" à la fin (je ne sais pas quelle différence cela fait ...) et de le glisser dans la fente 2x dans Assets.xcassets, et cela a légèrement réduit le bouton étiré (environ un tiers de l'écran au lieu d'environ la moitié). Dans l'ensemble, je suis juste confus à pourquoi j'ai ce problème, et apprécierait une solution qui peut résoudre mon problème et expliquer pourquoi cela a fonctionné avant, mais ne le fait pas maintenant.

Merci d'avance.

Répondre

1

Salut RPatel99,

je faisais face à la même question. Mais j'ai trouvé une solution, définir l'image de votre bouton pour cette taille:
- Image @ 1x: 22x22px
- Image @ 2x: 44x44px
- Image @ 3x: 66x66px

Malheureusement, je Je ne peux pas poster de photos à cause de ma réputation.

Note: J'essaie de nombreuses façons différentes comme changer le cadre de mon image de bouton mais cela ne fonctionne pas. Si quelqu'un a une autre solution, dites-moi, je suis intéressé.

+0

de Mon image 1x est pas 22x22px, mais j'ai essayé de doubler sa taille pour 2x et 3x pour triplant mais qui s'étend juste l'image encore plus ... – RPatel99

+0

Modification des tailles de tous à être beaucoup plus petites corrections l'image étirée, mais le bouton gauche est toujours aligné pour une raison beaucoup plus loin vers la droite qu'elle ne devrait l'être ... changer la taille de l'image semble également changer la taille du bouton (même si avant la taille du bouton a déterminé combien l'image devrait redimensionner, pas vice versa), mais alors le barbutton ne balance pas avec le bouton comme il le devrait ... – RPatel99

0

Vous devez définir vue d'image pour le bouton de la barre comme ceci:

imageView est votre bouton de la barre ImageView.

let widthConstraint = imageView.widthAnchor.constraint(equalToConstant: 32) 
let heightConstraint = imageView.heightAnchor.constraint(equalToConstant: 32) 
heightConstraint.isActive = true 
widthConstraint.isActive = true 
+0

Je voudrais garder tout dans storyboard ... Dans la version précédente de XCode je viens de faire glisser un bouton dans le BarButtonItem gauche de la barre de navigation et définir l'image du bouton à l'image que je voulais, puis Je pourrais le redimensionner à ce que je voulais du storyboard. Alors, y a-t-il un moyen de le faire avec storyboard? Parce que le bouton et le barbuttonitem sont tous les deux créés dans le storyboard et je ne veux pas créer inutilement plus de '@ IBOutlet's où je n'en ai pas besoin. – RPatel99