Centre UILabel dans le Milieu de la Barre d'outils sur un Clavier

0

La question

Comment puis-je centre une étiquette dans le milieu du clavier de la barre d'outils? Je peux obtenir le label dans le milieu du clavier, mais il n'est pas centré correctement

enter image description here

lazy var textView: UITextView = {
    // ...
}()

lazy var dummyToolBarButton: UIButton = {
    let button = UIButton(type: .system)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.setImage(UIImage(named: "cogIcon"), for: .normal)
    button.alpha = 0
    button.sizeToFit()
    return button
}()

lazy var timerLabel: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "00:00"
    label.font = UIFont.monospacedDigitSystemFont(ofSize: 15.5, weight: .regular)
    label.backgroundColor = .clear
    label.textColor = .gray
    label.textAlignment = .center
    label.sizeToFit()
    return label
}()

override func viewDidLoad() {
    super.viewDidLoad()

    setToolBarOnKeyboard()
}

func setToolBarOnKeyboard() {
    
    let toolBar = UIToolbar()
    toolBar.sizeToFit()
    
    let invisibleDummyButton = UIBarButtonItem(customView: dummyToolBarButton) // alpha is set to 0
    
    let flexibleSpaceLeft = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    
    let labelItem = UIBarButtonItem(customView: timerLabel)
    
    let flexibleSpaceRight = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    
    let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissKeyboard))
    
    toolBar.setItems([invisibleDummyButton, flexibleSpaceLeft, labelItem, flexibleSpaceRight, doneButton], animated: false)
    
    textView.inputAccessoryView = toolBar
}

@objc func dismissKeyboard() { }
ios keyboard swift toolbar
2021-11-23 19:11:13
1

La meilleure réponse

0

Tout ce que j'avais à faire était de définir un bouton sur le côté gauche de la barre d'outils à utiliser UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: nil) et de définir la couleur de premier plan clair invisibleDummyButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.clear], for: .normal)

func setToolBarOnKeyboard() {
    
    let toolBar = UIToolbar()
    toolBar.sizeToFit()
    
    let invisibleDoneButtonLeft = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: nil)
    invisibleDoneButtonLeft.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.clear], for: .normal)

    let flexibleSpaceLeft = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    
    let middelLabelItem = UIBarButtonItem(customView: timerLabel)
    
    let flexibleSpaceRight = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    
    let doneButtonRight = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissKeyboard))
    
    toolBar.setItems([invisibleDoneButtonLeft, flexibleSpaceLeft, middleLabelItem, flexibleSpaceRight, doneButtonRight], animated: false)
    
    textView.inputAccessoryView = toolBar
}

Voici une photo de l'étiquette correctement centré

enter image description here

Voici l'image de la barre d'outils avant de mettre j'ai mis le bouton sur le côté gauche de .clear

enter image description here

2021-11-23 20:34:21

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................