2017-09-29 2 views
0

Je crée un bouton en utilisant SwiftIcons, mais la position de l'icône n'est pas correcte. J'ajoute une largeur négative pour le fixer:Swift UIBarButtonItem position qui a été créée par programme

let menuButton = UIBarButtonItem() 
menuButton.setIcon(icon: .ionicons(.chevronLeft), iconSize: 24, color: .white, cgRect: CGRect(x: 0, y: 0, width: 24, height: 24), target: self, action: #selector(menuButtonClick)) 
let negativeSpacer:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil) 
negativeSpacer.width = -13.7; 
self.navigationItem.leftBarButtonItems = [negativeSpacer, menuButton] 

Cela fonctionne pour iOS 10 ou moins, mais sur iOS 11 la largeur ne prend pas des valeurs négatives.
Image
Comment puis-je résoudre ce problème?

Réponse:

let menuButton = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(menuButtonClick)) 
menuButton.image = UIImage.init(icon: .ionicons(.chevronLeft), size: CGSize(width: 24, height: 24)) 
menuButton.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0) 
self.navigationItem.leftBarButtonItem = menuButton 

Répondre

0

Peut-être que vous pouvez essayer en modifiant edgeInsets pour votre bouton avec cette méthode:

UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right); 

Il vous permet d'ajouter un peu de rembourrage sur votre barButtonItem. Voici comment vous pouvez l'utiliser avec votre code actuel:

negativeSpacer.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0); 
+0

Aucune réaction à la fois des valeurs positives et négatives appliquées à negativeSpacer ou MenuButton :( – rejjer

+0

Mais cela fonctionne, lorsque l'icône ajoutée comme l'image pour barButton, merci! – rejjer