So erstellen ich mehrere UILabel
s programmatisch, die innerhalb einer sitzt und UILongPressGestureRecognizer
verwenden, um die Berührungen zu erkennen. Zum Schreiben verwende ich die Option s spacing
, um den Etiketten einen gewissen Spielraum zu geben, aber ich möchte die Totzonen entfernen, vorausgesetzt, dass Berührungen nicht sehr genau sind.Hinzufügen eines anklickbaren Randes zu UILabel
stackView = UIStackView()
stackView.axis = .vertical
stackView.alignment = .center
stackView.distribution = .fillEqually
stackView.spacing = 12
let recognizer = UILongPressGestureRecognizer(target: self, action:#selector(self.handleGesture))
stackView.isUserInteractionEnabled = true
recognizer.delegate = self as? UIGestureRecognizerDelegate
stackView.addGestureRecognizer(recognizer)
view.addSubview(stackView)
let label = UILabel()
label.textColor = UIColor.gray
label.textAlignment = .center
label.font = UIFont.boldSystemFont(ofSize: 11.0)
label.text = "A"
label.backgroundColor = UIColor(white: 0.15, alpha: 0.8)
label.roundedButton()
stackView.addArrangedSubview(label)
.roundedButton
ist eine Erweiterung wie folgt:
extension UILabel {
func roundedButton(){
self.layer.cornerRadius = 6
self.layer.borderWidth = 1
self.layer.masksToBounds = true
}
}
Ich habe versucht, das Hinzufügen Polsterung mit inset
, aber das sitzt im Hintergrund. Irgendwelche Gedanken?
Eine Möglichkeit, dies zu erreichen, ist das Etikett in einem UIView
platzieren, aber es muss ein Weg sein, es nur mit der UILabel
Um den eingehenden Kommentar als Frage zu beantworten, wird der Erkenner zum stackview hinzugefügt, nicht jedes Etikett – Nico
Wickeln Sie das Etikett in einer Ansicht, die Erkennungs zu der Ansicht hinzuzufügen. – Sulthan
Warum verwenden Sie Etiketten anstelle von Schaltflächen? –