2014-02-19 5 views
3

Я хотел бы создать резиновую кнопку в моем приложении iOS: когда пользователь нажимает кнопку, она сокращает свой кадр, а когда пользователь отпускает кран, он будет расти, развернуть бит а затем вернуться к первоначальному размеру с эффектом подпрыгивания, как если бы он был сделан из резины. Я видел эту кнопку в некоторых других приложениях, и я уверен, что они использовали динамику iOS 7 UIKit для реализации этого эффекта. Я проверил различное поведение динамики UIKit, но ни один из них не кажется полезным, поскольку ни один из них не меняет размер фрейма. Мне было интересно, есть ли намек на то, как реализовать это поведение?Резиновая кнопка с динамикой UIKit

+0

Вы правы .. Я дал один голос. –

ответ

11

Это, вероятно, не UIKitDynamics, а просто анимация.

UIKitDynamics используется для перемещения вещей вокруг экрана и применяя физику столкновений и т.д. ...

Что вы могли бы использовать это новый метод анимации ...

- (void)animateWithDuration:(NSTimeInterval)duration 
         delay:(NSTimeInterval)delay 
    usingSpringWithDamping:(CGFloat)dampingRatio 
     initialSpringVelocity:(CGFloat)velocity 
        options:(UIViewAnimationOptions)options 
       animations:(void (^)(void))animations 
       completion:(void (^)(BOOL finished))completion; 

Это будет анимировать изменение но примените эффект пружины к кривой анимации.

Если вы измените рамку кнопки внутри блока анимации, она «подведет» новую рамку и будет выглядеть резиновой.

Вы можете прочитать об этом здесь ... http://www.oliverfoggin.com/animate-with-springs/

+0

Спасибо за указание этого метода, с его помощью я мог бы легко реализовать кнопку, которую я хотел (см. Мой собственный ответ) – MrTJ

+0

Happy to help :) – Fogmeister

0

Как ответил Fogmeister, анимация с пружинным затуханием является вашим другом. Если вы хотите, чтобы предназначаться старые версиями прошивки, вы можете написать код анимации на этих линиях:

[UIView animateWithDuration:duration animations:^{ 
    // increase to 1.1 of the final size 
} completion:^(BOOL finished) { 
    // reduce to final size in new animation block 
} 

Хотя это, очевидно, не столь гибко, как пружинная механика в прошивке 7, визуально, это выглядит очень похоже.

0

Как @Fogmeister отметил, самый простой способ, чтобы оживить масштаб кнопки с новым UIView метода «анимировать ... usingSpring ...» ИО 7. Я загрузил образцы г для вашей ссылки на https://gist.github.com/mrtj/9089823

0

Образец кода UIKit Dynamics Catalog содержит демонстрацию того, чего вы пытаетесь достичь. Более подробно см. here.

В принципе вам потребуется комбинация UIAttachmentBehavior и UIPushBehavior.

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