Как се определя началната скорост на UISpringTimingParameters?

Опитвам се да изпълня пролетна анимация на изглед, който се освобождава от жеста на панорамиране на потребителя и може да има различна от нула скорост. По същество се опитвам да пресъздам анимацията на този WWDC видеоклип където използват UISpringTimingParameters(dampingRatio:initialVelocity:). Обаче документацията изглежда си противоречи:

скороста

Началната скорост и посоката на анимацията, посочени като единичен вектор.

[...]

Например, ако общото разстояние на анимация е 200 точки и началната скорост на изгледа е 100 точки в секунда, посочете вектор с магнитуд 0.5.

Ако 0.5 е примерна стойност, тогава очевидно в крайна сметка не е необходимо да бъде единичен вектор. И не е възможно да се кодира скорост в единичен вектор на първо място.

Тъй като не мога да разчитам на документацията, опитах да включа няколко различни стойности, но нищо не доведе дори до задоволителни резултати.

Как да използвам този API?


person Tim Vermeulen    schedule 01.09.2017    source източник
comment
FYI, документацията е значително подобрена, за да обясни по-добре това: developer.apple.com /documentation/uikit/   -  person smileyborg    schedule 04.02.2020


Отговори (1)


Добър въпрос.

TL;DR: Ако се опитвате да анимирате нещо в позиция в 2D, трябва да анимирате всяка координата поотделно, всяка със съответната скорост x / y.

Ако ги комбинирате, като вземете скаларната проекция на скоростта върху вашето отместване, получавате странен артефакт, където приемаме контекста на плъзгане на изглед около екрана, където целта е центърът на екрана, а вие плъзгате изгледа нагоре дясната страна, тъй като анимацията трябва да се върне в центъра и тъй като комбинираната скорост се отдалечава от центъра, анимацията може само да приеме, че обектът се движи по права линия встрани от центъра и ще се изплъзне към вдясно, преди анимиране обратно към центъра.

https://github.com/chrisco314/SpringAnimationTest

person Chris Conover    schedule 02.02.2018