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
    评论
iOS的开发中,使用Swift可以实现底部弹出视图。以下是一个简单的实现方式: 首先,需要创建一个底部弹出视图的ViewController。可以在Storyboard中创建一个新的ViewController,并设置其底部约束为屏幕底部,高度为底部弹出视图的高度。可以在该ViewController中添加需要显示的内容,比如按钮、标签等。 然后,在需要弹出底部视图的地方,可以通过 present 方法来显示这个ViewController。可以在当前的ViewController中添加一个按钮,当点击该按钮时,调用如下代码来显示底部弹出视图: ```swift // 创建底部弹出视图的ViewController let bottomViewController = storyboard?.instantiateViewController(withIdentifier: "BottomViewController") as! BottomViewController // 设置底部弹出视图的 ModalPresentationStyle 为 .overCurrentContext,使得弹出视图会覆盖当前视图 bottomViewController.modalPresentationStyle = .overCurrentContext // 设置底部弹出视图的 TransitioningDelegate;通过实现相关代理方法来自定义弹出视图的动画效果 bottomViewController.transitioningDelegate = self // 弹出底部视图 present(bottomViewController, animated: true, completion: nil) ``` 在当前ViewController中,需要增加一个扩展来实现底部弹出视图的自定义动画: ```swift extension ViewController: UIViewControllerTransitioningDelegate { // 返回自定义的动画控制器对象 func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? { return BottomViewAnimator(isPresenting: true) } // 返回自定义的动画控制器对象 func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { return BottomViewAnimator(isPresenting: false) } } ``` 在自定义动画控制器中,可以实现底部弹出视图的动画效果。可以通过使用 UIView 的动画方法来实现位移、透明度等动画效果。 最后,需要创建一个自定义的 Animator 类,实现 UIViewControllerAnimatedTransitioning 协议的相关代理方法来控制动画的展示和隐藏。 通过上述步骤,即可完成iOS底部弹出视图的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值