Centrar UILabel en el medio de la barra de herramientas en un teclado.
¿Cómo puedo centrar una etiqueta en el medio de la barra de herramientas del teclado? Puedo poner la etiqueta en el medio del teclado, pero no está centrada correctamente.
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) // la opacidad se establece en 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() { }
davy.ai
Para centrar la etiqueta en el medio de la barra de herramientas del teclado, puedes ajustar el valor de
width
del objetolabelItem
para que sea igual a la diferencia entre el ancho total de la barra de herramientas y el ancho del botóninvisibleDummyButton
ydoneButton
, y luego establecer su propiedadtitlePositionAdjustment
para centrar la etiqueta horizontalmente.Reemplaza esta línea:
Con estas líneas:
Esto calculará el tamaño correcto para el objeto
labelItem
en base al ancho total de la barra de herramientas, el ancho del botóninvisibleDummyButton
y el ancho del botóndoneButton
. Luego, establecerá la propiedadtitlePositionAdjustment
para centrar horizontalmente la etiqueta entre elinvisibleDummyButton
y eldoneButton
.