Я хочу создать эффект искривления над изображением, как показано на видео Sparkle Effect Единственный способ, которым я мог думать о том, чтобы сделать это анимацию каждой частицы отдельно, используя основную анимацию, но это было бы неэффективным, а также трудоемким. Есть ли другой способ, я могу сделать то же самое?Sparkle effect iOS
ответ
Вот решение из книги повара Эрика Сьюзан. Смотрите, это работает для вас.
Вы можете добавить визуальный интерес к своим интерфейсам, используя излучатели в тандеме с пользовательскими касаниями. Следующий класс демонстрирует, как следить за своей жизнью, добавляя немного блеска туда, где пользователь прикасается к экрану.
Класс начинается, как только пользователь прикасается к экрану, создавая слой эмиттера и отдельную ячейку-эмиттер. Клетка определяет частицы - их цвет, рождаемость, продолжительность жизни, скорость и т. Д.
По достижении касания пользователя этот класс обновляет местоположение излучателя, удаляя излучатель, когда сенсор удаляется с экрана. Хотя этот пример написан для взаимодействия с одним касанием, вы можете легко обновить код, чтобы добавить массив эмиттеров (а не один экземпляр) для взаимодействия с несколькими контактами.
Излучатели легко добавлять в ваши проекты и эффективно работать. В то время как слишком много анимации никогда не является хорошей дизайнерской идеей, маленький блеск, используемый разумно, может добавить жизнь и движение.
@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
Не забудьте создать файл с именем PNG spark.png для создания анимации.
какую библиотеку мне нужно импортировать для «COOKBOOK_PURPLE_COLOR» – Simulator
она использует предварительно установленный цвет в своей работе, чтобы облегчить доступ к нему в пределах одного класса. вы можете использовать цвет cg по вашему выбору. плохо пойти с [uicolor colorwithred: и управлять цветами и альфой или [биколор colorwithcgcolor] и установить для него определенный цвет cg. эта часть зависит от вас. –
Спасибо, работал как шарм, единственное, что мне нужно знать, это как уменьшить скорость частиц. – Simulator
Пожалуйста, проверьте это решение.
https://github.com/GabriellaQiong/CIS581-Project2-Image-Morphing
CIwarpKernel кетов вы деформировать изображение в соответствии с ориентирами. Это именно то, что вы хотите сделать, чтобы иметь морфинг изображения.
Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – Bruce
- 1. iOS TableView Gradient Effect
- 2. UIBezierpath Shadow effect - iOs
- 3. ios animation revolving effect
- 4. Ios Video Effect
- 5. Folded Map Effect on iOS
- 6. Ios passcode effect в Android
- 7. Audio Spectrum Effect iOS/Android
- 8. Scratch card effect for ios
- 9. Обновление Sparkle - Как sparkle уведомляет download_finish и unarchive_finish
- 10. Sparkle 10.9 Ошибка связи
- 11. Каков статус инфраструктуры Sparkle?
- 12. ILCrashreporter прерывает обновления Sparkle
- 13. Sparkle in Xcode 5
- 14. Эффект Sparkle с JQuery
- 15. Эффект Jquery Sparkle не работает
- 16. Glass Effect - Artistic Effect
- 17. IOS SDWebImage Cross Fade Effect UITableViewCell
- 18. iOS 7 blur effect on videoPlayer
- 19. ios game make mask layer effect
- 20. UIInterpolatingMotionEffect Parallax Effect Swift 2 iOS
- 21. Need Image Effect Library для Android IOS
- 22. Curl effect на Titanium Android/Ios App
- 23. Вызов программы Sparkle извне приложения
- 24. Xcode 5 + Sparkle + Code Signing
- 25. CSS3 PIE и jQuery Sparkle
- 26. Что означает `effect` означает в` scalaz-effect`
- 27. Heartbeat effect
- 28. Autozoom Effect
- 29. Border.Background Effect
- 30. Android motion motion blur effect
«Анимация каждой частицы отдельно с использованием анимации ядра будет неэффективной и трудоемкой» - так вы ее оценили? – 2013-05-07 11:50:44