В настоящее время я разрабатываю приложение для iOS. В приложении у меня есть блоки (UIView), падающие с верхней части экрана с использованием uiview animatewithduration. Я ищу, чтобы они экспоненциально становились быстрее, когда они падали. Есть ли способ сделать это, используя animatewithduration или есть другой способ, которым вы попытаетесь добиться такого же эффекта?animatewithduration экспоненциально ускоряется
ответ
Вы можете увеличить свою продолжительность с помощью переменной в блоке завершения и вызвать анимацию. Это был бы простой, но эффективный способ сделать то, что вы просите.
[UIView animateWithDuration:someVariable animations:^{
// Animation
}
completion:^ (BOOL finished)
{
if (finished) {
// Increment your someVariable here
// Then just call this holding method again
}
}];
, но я просто добавлю 100 анимаций один в начало следующего – BDGapps
Возможно, эмиттер частиц? https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CAEmitterLayer_class/Reference/Reference.html –
Если вы становитесь очень сложным, я бы просто рекомендовал Cocos2d, поскольку он разработан именно для этих типов вещей и позволяет значительно увеличить функциональность с оптимизированной производительностью. –
Вы можете использовать CAAnimations с пользовательскими функциями синхронизации для этого. Небольшой пример:
CAMediaTimingFunction *timing = [[CAMediaTimingFunction alloc] initWithControlPoints:1 :0.1 :1 :0.9];
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
anim.timingFunction = timing;
anim.duration = 0.4;
anim.toValue = [NSNumber numberWithFloat:480];
[view.layer addAnimation:anim forKey:nil];
замечательный может у, пожалуйста, объясните, что это initWithControlPoints: 1: 0.1: 1: 0.9]; спасибо – BDGapps
это контрольные точки кубической [безьекур] (https://en.wikipedia.org/wiki/Bézier_curve). Вы можете играть с паараметрами с помощью этого приятного [онлайн-инструмента] (http://cubic-bezier.com), чтобы получить требуемую кривую. –
работает, однако, когда скорость меньше, чем около 20 секунд, она скачет и не является плавным действием – BDGapps
- 1. watchOS2 animateWithDuration начинает медленно и ускоряется
- 2. Java-таймер ускоряется с перерисовкой
- 3. setTimeout - счетчик, увеличивающий скорость экспоненциально
- 4. Swift animateWithDuration()
- 5. animateWithDuration недоступно
- 6. Stop animateWithDuration
- 7. Прерывание animateWithDuration
- 8. Spark join экспоненциально медленный
- 9. Функция прокрутки экспоненциально перемещается
- 10. Число подключенных (!) Подграфов экспоненциально?
- 11. Counter Increment Экспоненциально
- 12. Скорость передачи RabbitMQ ускоряется?
- 13. Многопоточность C не ускоряется
- 14. Серьезно ускоряется PHP?
- 15. setinterval, кажется, ускоряется
- 16. OpenMP Runtime не ускоряется
- 17. setInterval, похоже, ускоряется?
- 18. Rails 3 приложение ускоряется
- 19. JS SetInterval ускоряется
- 20. Numba не ускоряется функция
- 21. ускоряется с размытием?
- 22. jquery bounce автоматически ускоряется
- 23. UIView animateWithDuration: продолжительность: анимация: завершение: кажется, имеет переход по умолчанию?
- 24. Swift: animateWithDuration поведение
- 25. AnimateWithDuration работает странно
- 26. UIView animateWithDuration не выполняется.
- 27. Swift animatewithDuration() немедленно завершает
- 28. animateWithDuration не отображается
- 29. Неправильный блок AnimateWithDuration
- 30. UIView animateWithDuration start over
Если ни одна из встроенных функций синхронизации не соответствует вашим требованиям, создайте CAKeyFrameAnimation с вашим пользовательским временем. – Till