2009-07-22 29 views
23

La documentazione non parla molto di ciò che questo tecnicamente fa.Che cosa fa fillMode esattamente?

fadeInAnimation.fillMode = kCAFillModeForwards; 

Non vedo davvero l'effetto di questo. Ho una vista con alpha impostato su 0.0. Poi lo sbiadisco. Ma quando annullo la riga abouth, non cambia nulla. Stesso comportamento. Mi piacerebbe capire cosa fa veramente questo fillMode.

risposta

43

Dal CAMediaTiming protocol documentation:

Determina se la presentazione del ricevitore è congelato o rimosso una volta la sua durata attiva è stata completata.

Determina cosa succede alla fine dell'animazione. Per impostazione predefinita, è impostato su kCAFillModeRemoved, il che significa che le modifiche dell'animazione vengono annullate al termine dell'animazione. Se lo si passa a kCAFillModeForwards, le modifiche causate dall'animazione si aggirano intorno.

Nota che probabilmente dovrai anche impostare la proprietà removedOnCompletion su NO per impedire la rimozione dell'animazione, il che renderebbe questa impostazione inefficace.

+0

grande spiegazione! Sì, ho rimossoCompletion impostato su NO. Ecco perché non vedo cambiamenti nella modalità Fill, giusto? Perché si chiama "fillMode"? Quindi internamente non è altro che mantenere i nuovi parametri calcolati dopo tutte le routine di interpolazione dell'animazione? – Thanks

+1

Quindi cosa è 'removedOnCompletion' per se' fillMode' fa il lavoro? – jowie

+1

@jowie: impedisce che l'animazione nel suo insieme venga rimossa al suo completamento. FillMode semplicemente lo blocca nel suo stato finale, ma se è impostato per essere rimosso una volta terminato, l'impostazione fillMode non avrà importanza. –

2

Vi faccio una risposta più chiarito:
anche se in impostando la proprietà dell'animazione fillMode a kCAFillModeForwards (o kCAFillModeBoth) aspetto e a creare removedOnCompletion-NO può mantenere il vostro livello nel suo stato finale, quando l'animazione finito stesso tempo ma questo uso di fillMode non è il modo progettato. e in realtà fare del male se avete altra animazione aggiungere allo stesso il keyPath

(a proposito, l'approccio corretto per mantenere l'animazione stato finale è quello di modificare il valore della proprietà in modo che corrisponda il fotogramma finale dell'animazione.)

ciò che il fillModedavvero usare è in relazione con un'animazione bambino all'interno di un'animazione raggruppati in modo da poter indicare l'animazione bambino specifico in stato desiderato

Problemi correlati