web-dev-qa-db-fra.com

Comment modifier la hauteur et la largeur d'un bouton dans une application iOS à l'aide de Swift 4.0, développé à l'aide de Swift 3.0

Je suis complètement nouveau dans le développement iOS et je suis censé corriger quelques bugs dans une application iOS créée avec Swift 3.0 et Xcode 8, et cela fonctionne presque bien. Mais lorsque je l'ouvre avec Xcode 9 et Swift 4.0, il affiche des boutons très différents de ceux qu'ils étaient auparavant. 

Voici le code source de l’un de ces boutons.

let button: UIButton = UIButton.init(type: UIButtonType.custom)
    //set image for button
    button.setImage(UIImage(named: "menu.png"), for: UIControlState())
    button.frame = CGRect(x: 0, y: 0, width: 30, height: 23)
    let barButton = UIBarButtonItem(customView: button)
    button.addTarget(self, action: #selector(ViewController.shareButtonPressed), for: UIControlEvents.touchUpInside)

    self.navigationItem.leftBarButtonItem = barButton

ce code est à l'intérieur de la méthode ViewDidLoad. Mon problème est quand je retire,

button.setImage(UIImage(named: "menu.png"), for: UIControlState())

il disparaît le bouton mais quand je change la hauteur et la largeur de,

button.frame = CGRect(x: 0, y: 0, width: 30, height: 23)

cela ne change rien. Mon problème est de savoir comment résoudre ce problème. Toute suggestion, réponse est très appréciée et si les détails fournis ne suffisent pas, merci de le mentionner. Je vous remercie!

5
Sami Udakara

À partir de iOS 11, les vues ajoutées aux barres d'outils à l'aide de UIBarButtonItem à l'aide de UIBarButtonItem(customView:) sont désormais présentées en utilisant la disposition automatique. Vous devez ajouter des contraintes de dimensionnement sur votre button. Par exemple:

button.widthAnchor.constraintEqualToConstant(30.0).isActive = true
button.heightAnchor.constraintEqualToConstant(23.0).isActive = true

Sinon, la mise en page automatique utilisera la taille de contenu intrinsèque de votre vue d’en-tête, ce qui ne correspond probablement pas à vos attentes. 

Pour plus d'informations, voir la session WWDC 2017 Mise à jour de votre application pour iOS 11 .

6
beyowulf

Swift 4:

button.widthAnchor.constraint(equalToConstant: 30.0).isActive = true
button.heightAnchor.constraint(equalToConstant: 20.0).isActive = true
8
Chetan Dobariya

Vous pouvez personnaliser la largeur et la hauteur du bouton à l'aide du storyboard dans Xcode. Il suffit de sélectionner votre bouton et d’ouvrir cette fenêtre.  Constraint Layout

Après cela, ajoutez simplement les contraintes de hauteur.

0
Pawan kumar sharma