3

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

4

4 回答 4

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/

于 2014-02-19T09:16:38.283 回答
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 中的 spring 机制灵活,但在视觉上,它看起来非常相似。

于 2014-02-19T10:44:08.433 回答
0

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

于 2014-02-19T11:03:48.700 回答
0

UIKit Dynamics Catalog示例代码包含一个您想要达到的目标的演示。更明确地说,请参见此处

基本上,您将需要UIAttachmentBehavior和的组合UIPushBehavior

于 2017-11-03T11:45:41.620 回答