2014-02-01 2 views
0

Я пытаюсь ускорить UIView за время/расстояние. До сих пор кажется, что UIPushBehavior является непрерывным, т. Е. Он не останавливается, пока он не достигнет неподвижного объекта. Есть ли способ ускорить UIView с течением времени? или расстояние?Ускорить UIView с помощью UIPushBehavior

PS Я не большой с точки зрения физики жаргоне, поэтому, пожалуйста, будьте добры хаха

+0

Например, я хочу ускорить космический корабль на 100 пунктов каждый раз, когда пользователь нажимает на экран. –

ответ

2

Пара мыслей:

  1. Если вы хотите, чтобы замедлить толчок с течением времени, так что одно нажатие переводит на некоторое конечное пройденное расстояние, вы должны (a) добавить линейный resistance (чтобы он замедлялся); и (б) использовать UIPushBehaviorModeInstantaneous (поэтому он не продолжает толкать). Чтобы добавить resistance, вы бы добавить UIDynamicItemBehavior:

    UIDynamicItemBehavior *resistanceBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[viewToAnimate]]; 
    resistanceBehavior.resistance = 1.0; 
    [self.animator addBehavior:resistanceBehavior]; 
    

    С точки зрения регулирования расстояния, которое генерирует каждый толчок, это сочетание (а) величины pushDirection вектора вы используете; (b) resistance, который вы применяете к своему товару в UIDynamicItemBehavior; (c) размер элемента, который вы перемещаете; и (d) density, которые вы применяете к своему изделию в UIDynamicItemBehavior. Вероятно, лучше всего поиграть с этими переменными до тех пор, пока вы не достигнете желаемого расстояния для одного нажатия.

  2. Если, с другой стороны, вы хотите, чтобы «ускорить UIView в течение долгого времени», а затем, а не UIPushBehaviorModeInstantaneous, вы бы применить UIPushBehaviorModeContinuous. При непрерывном применении силы он будет продолжать ускоряться в pushDirection до тех пор, пока UIPushBehavior не будет удален из UIDynamicAnimator.

+0

Эй @rob - можете ли вы прикрепить «весну» в динамике? Итак, мы начинаем с 0,0. Вы добавляете UIPushBehaviorModeInstantaneous, скажем, влево. весенняя концепция сделает это, ну, ведите себя как весна, она оправится и, в конечном счете, снова опустится на 0,0. Это возможно с помощью UIKit Dynamics? Ура! – Fattie

+0

@JoeBlow Вы можете добиться весенних эффектов несколькими способами, но я не уверен, что это имеет смысл в контексте поведения толчка. Это имеет смысл в контексте «UIAttachmentBehavior» (обычно связанного с каким-то непрерывным жестом) или «UISnapBehavior» (обычно связанного с дискретным жестом). Если вы все еще неясны после исследования/экспериментирования с этими поведением, я бы предложил вам опубликовать новый вопрос, а не обсуждать дальше в комментариях здесь. – Rob

+0

Привет @Rob, спасибо за ответ. У меня есть прекрасный пример, создающий «неправильную тряску» той же физики, что и UIKit Dynamics ... http://stackoverflow.com/questions/24356051 (не связанный с жестов, приложение инициирует его в этом случае) Приветствия! – Fattie

Смежные вопросы