Spostamento di una vista UIV lungo un CGPath in base alla posizione del tocco
-
06-07-2019 - |
Domanda
Ho un grafico a linee che ho disegnato in Quarzo e una 'bolla' di UIView che vorrei idealmente apparire quando l'utente tocca la singola linea della trama e ci sposta il dito lungo. La bolla mostra alcune informazioni aggiuntive sul grafico.
Mi piacerebbe "collegare" l'UIView alla trama di CGPath, ma ho difficoltà a capire concettualmente il modo migliore per farlo. So che puoi animare una vista lungo un CGPath, ma questo non sembra funzionare per me, perché l'utente ha bisogno di 'strofinare' lungo il grafico con il dito piuttosto che con qualsiasi animazione automatica.
Qualcuno ha qualche suggerimento su un buon approccio?
Soluzione
Forse non è necessario animarlo. Gli eventi di tocco volano abbastanza rapidamente - forse se sposti semplicemente la vista nella posizione appropriata rispetto al tocco senza animazione, la mossa sarà abbastanza regolare. Se ciò non è abbastanza buono, dovrai animare lungo il segmento del grafico dalla posizione corrente della vista (vedi Layer presentazione CALayer) alla posizione desiderata. La chiave è che ti animerai ogni volta che ricevi un evento touch (e qualsiasi precedente animazione verrà cancellata).
Altri suggerimenti
Come ha detto Neil, la tua scommessa migliore è semplicemente spostarti con gli eventi touch, sembrerà liscio se tutto ciò che stai facendo è spostare una vista. Usa [aTouch locationInView: view] per ottenere la posizione del tocco, quindi trova il punto più vicino sul percorso (forse usa il valore x e cerca il valore y sul percorso per la x).