我想在我的 iOS 应用程序中创建一个类似橡胶的按钮:当用户点击按钮时,它会缩小它的框架,当用户释放点击它会增长,扩大一点,然后用弹跳效果就像它是由橡胶制成的。我在其他一些应用程序中看到了这种按钮,我很确定他们使用 iOS 7 UIKit 动态来实现这种效果。我检查了 UIKit 动态的不同行为,但它们似乎都没有用,因为它们都不会改变框架的大小。我想知道是否有关于如何实现这种行为的任何提示?
4 回答
这可能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/
正如 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 机制灵活,但在视觉上,它看起来非常相似。
正如@Fogmeister 指出的那样,最简单的方法是使用UIView
iOS 7 的新方法“animate ... usingSpring ...”为按钮的比例设置动画。我上传了一个示例要点供您参考 https://gist.github .com/mrtj/9089823
UIKit Dynamics Catalog示例代码包含一个您想要达到的目标的演示。更明确地说,请参见此处。
基本上,您将需要UIAttachmentBehavior
和的组合UIPushBehavior
。