Ami*_*ngh 100
如果要触发此动画,请编写此代码
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
[self.view addSubview:popUp];
[UIView animateWithDuration:0.3/1.5 animations:^{
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
popUp.transform = CGAffineTransformIdentity;
}];
}];
}];
Run Code Online (Sandbox Code Playgroud)
这是更新的代码(来自fabio.cionini)因为它被接受答案所以更新到最新.
Fab*_*ini 46
只是使用块重构Amit Singh的代码,这使得它更简单易读.
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
[self.view addSubview:popUp];
[UIView animateWithDuration:0.3/1.5 animations:^{
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
popUp.transform = CGAffineTransformIdentity;
}];
}];
}];
Run Code Online (Sandbox Code Playgroud)
Ann*_*awn 13
太复杂的答案.截至2017年(Swift 3/4),这样做要容易得多.
斯威夫特4 -
yourview.transform = yourview.transform.scaledBy(x: 0.001, y: 0.001)
UIView.animate(withDuration: 0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.3, options: .curveEaseInOut, animations: {
yourview.transform = CGAffineTransform.identity.scaledBy(x: 1.0, y: 1.0)
}, completion: nil)
Run Code Online (Sandbox Code Playgroud)
注意usingSpringWithDamping参数.此参数指示您需要多少反弹/弹簧效果,并允许从0到1的值.值越低,反弹效果越大.此外,如果你不喜欢这种scaleBy效果,那么你可以简单地使用好的旧帧来显示扩展和弹跳UIView.
现在这可以用更简单的方式完成:
view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
[UIView animateWithDuration:0.5 delay:0.2 usingSpringWithDamping:0.6f initialSpringVelocity:1.f options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
} completion:^(BOOL finished) {
view.transform = CGAffineTransformIdentity;
}];
Run Code Online (Sandbox Code Playgroud)
阿米特的回答很好并且接受了.对于想要在Swift/future中开发的人,我在这里发布了Swift版本的答案.我使用Xcode 7.3.1和Swift 2.2来开发它.
popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001)
self.view.addSubview(popView)
UIView.animateWithDuration(0.3/1.0, animations: {
popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1)
}, completion: {finished in
UIView.animateWithDuration(0.3/1.2, animations: {
popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
}, completion: {finished in
UIView.animateWithDuration(0.3/1.5, animations: {
popView.transform = CGAffineTransformIdentity
})
})
})
Run Code Online (Sandbox Code Playgroud)
谢谢,请做更新评论.
更新 以下是Swift 3的相同代码.适用于Xcode 8和iOS 10.
let identityAnimation = CGAffineTransform.identity
let scaleOfIdentity = identityAnimation.scaledBy(x: 0.001, y: 0.001)
popView.transform = scaleOfIdentity
self.view.addSubview(popView)
UIView.animate(withDuration: 0.3/1.5, animations: {
let scaleOfIdentity = identityAnimation.scaledBy(x: 1.1, y: 1.1)
popView.transform = scaleOfIdentity
}, completion: {finished in
UIView.animate(withDuration: 0.3/2, animations: {
let scaleOfIdentity = identityAnimation.scaledBy(x: 0.9, y: 0.9)
popView.transform = scaleOfIdentity
}, completion: {finished in
UIView.animate(withDuration: 0.3/2, animations: {
popView.transform = identityAnimation
})
})
})
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
仅用于将来的代码重用和保持代码清洁.
@interface UIView (Animation)
- (void)addSubviewWithBounce:(UIView*)theView;
@implementation UIView (Animation)
-(void)addSubviewWithBounce:(UIView*)theView
{
theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
[self addSubview:theView];
[UIView animateWithDuration:0.3/1.5 animations:^{
theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3/2 animations:^{
theView.transform = CGAffineTransformIdentity;
}];
}];
}];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29307 次 |
| 最近记录: |