• iOS 动画 旋转 移动简单代码


    #import "ViewController.h"

    @interface ViewController ()

    {

        UIImageView *imgView;

        BOOL flag;

        UIImageView *imgView1;

        UIImageView *imgView2;

        UIImageView *imgView3;

        

        UIButton *btn1;

        UIButton *btn2;

        UIButton *btn3;

    }

    @end

    @implementation ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        

        self.view.backgroundColor = [UIColor whiteColor];

        

        flag = YES;

        

        

        

        

        btn1 = [UIButton buttonWithType:UIButtonTypeCustom];

        btn1.frame = CGRectMake(250, 200, 60, 60);

    //    btn1.hidden = YES;

        [self.view addSubview:btn1];

        

        imgView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

        imgView1.layer.cornerRadius = 30;

        imgView1.layer.masksToBounds = YES;

        imgView1.image = [UIImage imageNamed:@"1.png"];

        [btn1 addSubview:imgView1];

        

        btn2 = [UIButton buttonWithType:UIButtonTypeCustom];

        btn2.frame = CGRectMake(250, 200, 60, 60);

    //    btn2.hidden = YES;

        [self.view addSubview:btn2];

        

        imgView2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

        imgView2.layer.cornerRadius = 30;

        imgView2.layer.masksToBounds = YES;

        imgView2.image = [UIImage imageNamed:@"2.png"];

        [btn2 addSubview:imgView2];

        

        btn3 = [UIButton buttonWithType:UIButtonTypeCustom];

        btn3.frame = CGRectMake(250, 200, 60, 60);

    //    btn3.hidden = YES;

        [self.view addSubview:btn3];

        

        imgView3 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

        imgView3.layer.cornerRadius = 30;

        imgView3.layer.masksToBounds = YES;

        imgView3.image = [UIImage imageNamed:@"3.png"];

        [btn3 addSubview:imgView3];

        

        

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

        button.frame = CGRectMake(250, 200, 60, 60);

        [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:button];

        

        imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

        imgView.layer.cornerRadius = 30;

        imgView.layer.masksToBounds = YES;

        imgView.image = [UIImage imageNamed:@"01.png"];

        [button addSubview:imgView];

        

    }

    -(void)click:(id)sender

    {

        if (flag)

        {

            [UIView animateWithDuration:0.5 animations:^{

                imgView.transform = CGAffineTransformMakeRotation(3.14);

    //             [btn1.layer addAnimation:[self moveX:2.0f X:[NSNumber numberWithFloat:-150.0f]] forKey:nil];

    //            [btn3.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil];

                [btn1.layer addAnimation:[self moveX:1.0 X:[NSNumber numberWithFloat:-150.0f] Direction:0] forKey:nil];

                [btn2.layer addAnimation:[self moveX:1.0 X:[NSNumber numberWithFloat:-150.0f] Direction:1] forKey:nil];

    //            [btn3.layer addAnimation:[self moveX:2.0 X:[NSNumber numberWithFloat:0] Direction:2] forKey:nil];

                CGPoint point = CGPointMake(-100, -100);

                [btn3.layer addAnimation:[self movepoint:point time:1.0] forKey:nil];

    //            [btn1.layer addAnimation:[self rotation:2.0 degree:0.78 direction:360 repeatCount:1] forKey:nil];

                [UIView animateWithDuration:0.5 animations:^{

                    btn1.transform = CGAffineTransformMakeRotation(M_PI);

                    btn2.transform = CGAffineTransformMakeRotation(M_PI);

                    btn3.transform = CGAffineTransformMakeRotation(M_PI);

                }];

            }];

            flag=NO;

        }

        else

        {

            [UIView animateWithDuration:0.5 animations:^{

                imgView.transform = CGAffineTransformIdentity;

    //            [btn1.layer addAnimation:[self moveX:2.0f X:[NSNumber numberWithFloat:0.0f]] forKey:nil];

                [btn1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:0.0f] Direction:0] forKey:nil];

                [btn2.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:0.0f] Direction:1] forKey:nil];

                CGPoint point = CGPointMake(0, 0);

                [btn3.layer addAnimation:[self movepoint:point time:1.0] forKey:nil];

                [UIView animateWithDuration:0.5 animations:^{

                    btn1.transform = CGAffineTransformMakeRotation(0);

                    btn2.transform = CGAffineTransformMakeRotation(0);

                    btn3.transform = CGAffineTransformMakeRotation(0);

                }];

                

            }];

            flag=YES;

        }

    }

    #pragma mark =====横向、纵向移动===========

    //横向或者纵向移动

    -(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x Direction:(NSUInteger)tag

    {

    //    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。

        CABasicAnimation *animation = [[CABasicAnimation alloc] init];///.y的话就向下移动。

        if (tag == 0)//横向,改变X

        {

            animation.keyPath = @"transform.translation.x";

            animation.toValue = x;

        }

        else if (tag == 1)//纵向,改变Y

        {

            animation.keyPath = @"transform.translation.y";

            animation.toValue = x;

        }

        animation.duration = time;

        animation.removedOnCompletion = NO;//yes的话,又返回原位置了。

        //    animation.repeatCount = MAXFLOAT;

        animation.repeatCount = 1;

        animation.fillMode = kCAFillModeForwards;

        return animation;

    }

    //移动到某个点

    -(CABasicAnimation *)movepoint:(CGPoint )point time:(float)time//点移动

    {

        CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation"];

        animation.toValue=[NSValue valueWithCGPoint:point];

        animation.removedOnCompletion=NO;

        animation.duration = time;

        animation.fillMode=kCAFillModeForwards;

        return animation;

    }

    //旋转

    -(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount

    {

        CATransform3D rotationTransform  = CATransform3DMakeRotation(degree, 0, 0,direction);

        CABasicAnimation* animation;

        animation = [CABasicAnimation animationWithKeyPath:@"transform"];

        animation.toValue= [NSValue valueWithCATransform3D:rotationTransform];

        animation.duration= dur;

        animation.autoreverses= NO;

    //    animation.cumulative= YES;

        animation.removedOnCompletion=NO;

        animation.fillMode=kCAFillModeForwards;

        animation.repeatCount= repeatCount;

        animation.delegate= self;

        return animation;

        

    }

  • 相关阅读:
    leetcode 17 Letter Combinations of a Phone Number
    剑指offer 数字翻译成字符串
    剑指offer 把数组排成最小的数
    剑指offer 整数中1出现的次数(从1到n整数中1出现的次数)
    剑指offer 数据流中的中位数
    RNN, LSTM, GRU cells
    剑指offer 最小的K个数
    PWA-网络
    PWA-缓存
    2018 总结
  • 原文地址:https://www.cnblogs.com/camillezlh/p/4570946.html
Copyright © 2020-2023  润新知