Sto provando ad animare i limiti di una UIView personalizzata mantenendo anche il suo livello delle stesse dimensioni della sua vista genitore. Per fare ciò, sto cercando di animare i limiti degli strati accanto alla sua vista genitore. Ho bisogno che lo strato chiami drawLayer: withContext AS sta animando, quindi il mio disegno personalizzato cambierà la dimensione correttamente insieme ai limiti.Impossibile ottenere un CALayer per aggiornare il suo drawLayer: DURANTE un'animazione di limiti
drawLayer viene chiamato correttamente e viene disegnato correttamente prima di avviare l'animazione. Ma non riesco a far sì che il layer chiami il suo metodo drawLayer su OGNI passo dell'animazione dei limiti. Invece, lo chiama solo una volta, saltando immediatamente verso i "confini finali" nel fotogramma finale dell'animazione.
// self.bg is a property pointing to my custom UIView
self.bg.layer.needsDisplayOnBoundsChange = YES;
self.bg.layer.mask.needsDisplayOnBoundsChange = YES;
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[CATransaction begin];
self.bg.layer.bounds = bounds;
self.bg.layer.mask.bounds = bounds;
[CATransaction commit];
self.bg.bounds = bounds;
} completion:nil];
Perché i limiti non riportano un cambiamento come l'animazione (non solo il fotogramma finale)? Che cosa sto facendo di sbagliato?
'viene chiamato ripetutamente durante l'animazione' Non automaticamente, non lo è. È una buona soluzione, ma l'inconveniente è che è necessario imporre 'needsDisplayForKey:' e per farlo è necessario sottoclassi CALayer. E dal momento che ci sono un certo numero di sottoclassi CALayer che potresti aver bisogno di usare (come CAGradientLayer, ecc.) Può essere un po 'un problema nel sedere. – zakdances
Poiché presentationLayer restituisce solo una copia statica, la risposta di I matt è l'unica cosa che funziona per ora. Credo che dovrò aggiungere speciali proprietà personalizzate per larghezza e altezza e animarle accanto ai limiti. Suona corretto? – zakdances
Non posso essere * certo * funzionerà nel modo desiderato, ma questa è certamente la direzione in cui stavo pensando che dovresti entrare quando ho fatto questo suggerimento. – matt