Ich habe eine Ansicht, wo der Benutzer eine Auswahl treffen muss, bevor eine Schaltfläche funktioniert. Um dies deutlicher zu machen, möchte ich, dass das Element, das die Auswahl darstellt, die ausgeführt werden muss, blinkt, wenn der (ausgegraute) Knopf zuerst gedrückt wird. I.e. Ich möchte darauf hinweisen, dass dies ein Fehler in diesem Status ist, und den Benutzer auf das Benutzeroberflächenelement aufmerksam machen, das er zuerst verwenden muss.Fehler durch UI-Element blinkend
Mein aktueller Versuch, das Element (self.display
im Code unten) haben zwei Mal schnell zu blinken ist die folgende:
@IBAction func inactiveButtonClick() {
let period = 0.16
UIView.animate(withDuration: period/2, delay: 0.0, options: [.curveEaseInOut, .autoreverse, .repeat], animations: {
self.display.alpha = 0
}, completion: { _ -> Void in
self.display.alpha = 1
})
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + period*2, execute: {
self.display.layer.removeAllAnimations()
})
}
Das funktioniert ganz gut, aber fühlt sich nicht 100% richtig, und Die Animation wird manchmal Sekundenbruchteile abgeschnitten, bevor sie endet. Ich denke, ich könnte zwei Animationen in die Warteschlange stellen, aber ich frage mich, ob es einen einfacheren Weg gibt, dies zu erreichen. Gibt es eingebaute Möglichkeiten, ein UI-Element blinken zu lassen, um auf einen Fehler hinzuweisen? Wenn nicht, gibt es irgendwelche "bekannten guten" Kombinationen von Kurven und Frequenzen, die dies einem Benutzer vermitteln?