橡胶像UIKit动力的弹性按钮

时间:2014-02-19 09:09:46

标签: ios iphone user-interface uikit-dynamics

我想在我的iOS应用程序中创建一个类似橡胶的按钮:当用户点击按钮时,它会缩小其框架,当用户释放水龙头时,它会增长,扩展一点,然后再回到原来的状态具有弹跳效果的尺寸就像它是由橡胶制成的一样。我在其他一些应用程序中看到了这种按钮,我很确定他们使用iOS 7 UIKit动态来实现这种效果。我检查了UIKit动力学的不同行为,但它们似乎都没有用,因为它们都没有改变框架的大小。我想知道是否有任何关于如何实现此行为的提示?

4 个答案:

答案 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/

答案 1 :(得分:0)

正如Fogmeister回答的那样,带有弹簧阻尼的动画是你的朋友。如果您想要定位旧版本的iOS,可以在这些行上编写动画代码:

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

虽然这显然不如iOS 7中的弹簧机制灵活,但在视觉上看起来非常相似。

答案 2 :(得分:0)

正如@Fogmeister指出的最简单的方法是使用iOS 7的新UIView方法“animate ... usingSpring ...”为按钮的缩放设置动画。我上传了一个示例要点供您参考到https://gist.github.com/mrtj/9089823

答案 3 :(得分:0)

UIKit Dynamics Catalog示例代码包含您尝试实现的内容的演示。更明确地说,请参阅here

基本上,您需要UIAttachmentBehaviorUIPushBehavior的组合。