Ho uno stylekit in paintcode con un metodo di disegno stylekit che accetta un singolo parametro - esiste un modo in cui posso utilizzare UIView.animateWithDuration (ecc.) Per animare quel parametro in modo che la mia vista si aggiorni senza problemi?C'è un modo per animare le variabili Paintcode?
risposta
Non animeraiWithDuration perché crea i fotogrammi chiave per te e questo è ciò che stai facendo con le variabili che passi nel metodo di disegno generato da PaintCode.
Dovrai implementare un UIView personalizzato. Creare una proprietà per la classe personalizzata che contiene il valore della variabile per il parametro accettato dal metodo di disegno. Sovrascrivi drawRect
per chiamare il metodo di disegno StyleKit e passare la variabile locale che contiene il valore per la variabile.
Quindi si utilizzerà un NSTimer
per iterare attraverso un valore nel tempo, aggiornando la proprietà di UIView personalizzata ad ogni iterazione. Il trucco è che quando la proprietà viene aggiornata devi chiamare self.setNeedsDisplay
(swift) o (ogg-c).
C'è un grande post sul blog su di esso disponibile qui: https://medium.com/a-first-project-with-paintcode/animating-the-arrow-6e61104b321b
Esiste un modo più efficiente per eseguire lo stesso compito? Il ridisegno della vista su un timer (in particolare un timer veloce) è molto costoso. (L'utilizzo della CPU è quasi del 50% sul mio 6S proprio per questo.) – Jake
Sono d'accordo. C'è un modo per ottenere lo stesso, ma senza l'uso di un timer (come in: c'è un modo più efficiente)? –
Sembra che tu stia reinventando ciò che Core Animation fa già. – wcochran
Paintcode ti dà 3 opzioni nella sezione dedicata alle FAQ:
- animazione con UIView e NSTimer
- animazione con l'abitudine di proprietà animatable di CALayer
- Animazione con proprietà animabili personalizzate e delegato di CALayer
Alcuni di questi hanno prestazioni migliori rispetto agli altri e puoi scaricare un progetto di esempio (Swift e Objective-C) direttamente dal loro sito web.
Riferimento: https://www.paintcodeapp.com/faq/animate-drawings-made-paintcode
Controlla ["Animazione proprietà layer personalizzate"] (http://www.objc.io/issues/12-animations/animating-custom-layer-properties/). –