Voglio creare un effetto sparkle su un'immagine come mostrato nel video Sparkle Effect l'unico modo in cui potrei pensare di farlo animando ogni particella separatamente utilizzando l'animazione core, ma sarebbe inefficiente e richiederebbe molto tempo. C'è qualche altro modo per fare lo stesso?Effetto sparkle iOS
risposta
Ecco una soluzione dal libro di ricette di Erica Susan. Vedi questo funziona per te.
È possibile aggiungere interesse visivo alle proprie interfacce utilizzando emittenti in tandem con i tocchi utente. La seguente classe dimostra come seguire un tocco nel corso della sua vita, aggiungendo un po 'di brio ovunque l'utente tocchi sullo schermo.
La classe inizia non appena l'utente tocca lo schermo, creando uno strato di emettitore e una cella di emettitore singola. La cellula definisce le particelle - il loro colore, il loro tasso di natalità, la loro durata, velocità e così via.
Mentre il tocco dell'utente progredisce, questa classe aggiorna la posizione dell'emettitore, rimuovendo l'emettitore una volta rimosso il tocco dallo schermo. Sebbene questo esempio sia scritto per l'interazione a tocco singolo, è possibile aggiornare facilmente il codice per aggiungere una serie di emettitori (piuttosto che una singola istanza) per l'interazione multi-touch.
Gli emettitori sono facilmente aggiunti ai progetti ed efficienti da eseguire. Mentre troppa animazione non è mai una buona idea di design, un piccolo scintillio usato con giudizio può aggiungere vita e movimento.
@interface SparkleTouchView : UIView {
CAEmitterLayer *emitter;
}
@end
@implementation SparkleTouchView
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
float multiplier = 0.25f;
CGPoint pt = [[touches anyObject] locationInView:self];
//Create the emitter layer
emitter = [CAEmitterLayer layer];
emitter.emitterPosition = pt;
emitter.emitterMode = kCAEmitterLayerOutline;
emitter.emitterShape = kCAEmitterLayerCircle;
emitter.renderMode = kCAEmitterLayerAdditive;
emitter.emitterSize = CGSizeMake(100 * multiplier, 0);
//Create the emitter cell
CAEmitterCell* particle = [CAEmitterCell emitterCell];
particle.emissionLongitude = M_PI;
particle.birthRate = multiplier * 1000.0;
particle.lifetime = multiplier;
particle.lifetimeRange = multiplier * 0.35;
particle.velocity = 180;
particle.velocityRange = 130;
particle.emissionRange = 1.1;
particle.scaleSpeed = 1.0; // was 0.3
particle.color = [[COOKBOOK_PURPLE_COLOR colorWithAlphaComponent:0.5f] CGColor];
particle.contents = (__bridge id)([UIImage imageNamed:@"spark.png"].CGImage);
particle.name = @"particle";
emitter.emitterCells = [NSArray arrayWithObject:particle];
[self.layer addSublayer:emitter];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint pt = [[touches anyObject] locationInView:self];
// Disable implicit animations
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
emitter.emitterPosition = pt;
[CATransaction commit];
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[emitter removeFromSuperlayer];
emitter = nil;
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[self touchesEnded:touches withEvent:event];
}
@end
Non dimenticare di creare un file PNG di nome spark.png al fine di creare l'animazione.
quale libreria devo importare per "COOKBOOK_PURPLE_COLOR" – Simulator
lei usa il colore preimpostato nel suo lavoro per renderlo più facile per l'accesso all'interno di una singola classe. puoi usare il colore cg di tua scelta. vai con [coloricolorcolore: e controlla i colori e l'alfa o [bicolore colorwithcgcolor e imposta un colore cg specifico per esso. quella parte dipende da te. –
Grazie, ha funzionato come un fascino, l'unica cosa che ho bisogno di sapere è come ridurre la velocità delle particelle. – Simulator
Si prega di controllare questa soluzione.
https://github.com/GabriellaQiong/CIS581-Project2-Image-Morphing
CIwarpKernel kets si deforma un'immagine secondo punti di riferimento. Questo è esattamente ciò che vuoi fare per avere il morphing dell'immagine.
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. – Bruce
- 1. crash ios effetto scratch card
- 2. Distribuzione di aggiornamenti software Beta e Sparkle
- 3. iOS trascina su UIView, effetto tela
- 4. Crea effetto testo luminoso su iOS
- 5. Android - Effetto Effetto immagine
- 6. iOS: come si apre la telecamera con effetto animazione?
- 7. Effetto di scorrimento con il gesto di scorrimento in iOS
- 8. Effetto effetto transizione barra in su
- 9. Effetto transizioni UIViewControllers Come effetto apertura libro iBook?
- 10. Effetto Effetto Android + Elevazione sulle viste senza pulsante
- 11. Effetto collaterale - cos'è questo?
- 12. Effetto Systemtap sulle prestazioni
- 13. Getter con effetto collaterale
- 14. Code effetto in Javascript
- 15. Effetto della SO_SNDBUF
- 16. Effetto sfocatura ingresso ember
- 17. pulsante CSS premendo effetto
- 18. Effetto arricciatura pagina Iphone
- 19. Effetto dissolvenza su scorrimento
- 20. Effetto ripple dell'acqua Pygame
- 21. ngAnimare con effetto collasso
- 22. Effetto di separazione?
- 23. Aggiungi effetto sfocato all'immagine
- 24. FragmentTransaction.remove non ha effetto
- 25. Effetto bounce su RecyclerView
- 26. C++ assegnazione effetto collaterale
- 27. Effetto trascina Trello
- 28. Effetto dissolvenza messaggio flash
- 29. Impressionante Effetto CSS
- 30. IPhone Testo Effetto bagliore
"L'animazione di ogni particella separatamente utilizzando l'animazione del core sarebbe inefficiente e dispendiosa in termini di tempo" - così l'hai messa a punto? –