iOS9 视图弹出的弹簧效果

iOS9 视图弹出的弹簧效果

Spring Animationring Animation):

在IOS7开始,系统动画效果广泛应用Spring Animation

复制代码
[UIView animateWithDuration:4.0 // 动画时长
                      delay:0.0 // 动画延迟
     usingSpringWithDamping:1.0 // 类似弹簧振动效果 0~1
      initialSpringVelocity:5.0 // 初始速度
                    options:UIViewAnimationOptionCurveEaseInOut // 动画过渡效果
                 animations:^{
                     // code...
                     CGPoint point = _imageView.center;
                     point.y += 150;
                     [_imageView setCenter:point];
                 } completion:^(BOOL finished) {
                     // 动画完成后执行
                     // code...
                     [_imageView setAlpha:1];
                 }];
复制代码

usingSpringWithDamping:它的范围为 0.0f 到 1.0f ,数值越小「弹簧」的振动效果越明显。

initialSpringVelocity:初始的速度,数值越大一开始移动越快。值得注意的是,初始速度取值较高而时间较短时,也会出现反弹情况。

转:Spring Animation 是线性动画或 ease-out 动画的理想替代品。由于 iOS 本身大量使用的就是 Spring Animation,用户已经习惯了这种动画效果,因此使用它能使 App 让人感觉更加自然,用 Apple 的话说就是「instantly familiar」。此外,Spring Animation 不只能对位置使用,它适用于所有可被添加动画效果的属性。

#import "ViewController.h"


@interface ViewController ()


@property(nonatomic, strong)UIImageView *imageView;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    UIImage *iamge = [UIImage imageNamed:@"chengxuyuan.png"];

    

    CGSize size = iamge.size;

    NSLog(@"the size is %@", NSStringFromCGSize(size));

    

    _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];

    

    _imageView.image = [UIImage imageNamed:@"chengxuyuan.png"];

    

    [self.view addSubview:_imageView];

    

    UITapGestureRecognizer *tapRecognizerRadar = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGestureRadar:)];

    [_imageView addGestureRecognizer:tapRecognizerRadar];

    _imageView.userInteractionEnabled = YES;


    CGAffineTransform fromTransform = CGAffineTransformScale(_imageView.transform, 0.2, 0.2);

    [_imageView setTransform:fromTransform];

//    CGAffineTransform toTransform = CGAffineTransformConcat(_imageView.transform,  CGAffineTransformInvert(_imageView.transform));

//    CGAffineTransform toTransform2 = CGAffineTransformScale(toTransform, 1.3, 1.3);

    

    [UIView animateWithDuration:1.0 // 动画时长

                          delay:0.0 // 动画延迟

         usingSpringWithDamping:0.4 // 类似弹簧振动效果 0~1

          initialSpringVelocity:5.0 // 初始速度

                        options:UIViewAnimationOptionCurveEaseInOut // 动画过渡效果

                     animations:^{

                         // code...

//                         CGPoint point = _imageView.center;

//                         point.y += 150;

//                         [_imageView setCenter:point];

                         [_imageView setTransform:fromTransform];

                         _imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);

                         

                     } completion:^(BOOL finished) {

                         // 动画完成后执行

                         // code...

                         [_imageView setAlpha:1];

                     }];

//


    


}


- (void)handleTapGestureRadar:(UITapGestureRecognizer *)sender {

    [UIView animateWithDuration:0.35 animations:^{

//        _imageView.frame = self.view.bounds;

        _imageView.transform = CGAffineTransformMakeScale(20.0f, 20.0f);

        _imageView.alpha = 0;

    } completion:^(BOOL finished) {

    }];

    

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值