第一次返回原始状态后,动画不起作用

时间:2015-10-04 20:53:16

标签: ios objective-c uiimage

我有两个UIImages相同,大小相同(40 x 40),它是整个UIImage上的一个简单点,我想动画旋转为3D。当第一个UIImage" colapse"并且它不可见,将属性HIDDEN更改为YES,并立即显示第一个下面的UIImage,当用户再次按下按钮时,所有内容都会在第一个状态时返回。但我只是第一次工作,之后,只是出现并消失了图像。

Heres是我的代码:

    @interface ViewController ()
    {
    BOOL myFlag;
    }
    @end


    - (void)viewDidLoad {
        [super viewDidLoad];
        self.C002.image = [Test imageOfCircle002];
        self.C005.image = [Test imageOfCircle005];
        self.C005.hidden = YES;
        myFlag = YES;
    }



    - (IBAction)animationButton:(id)sender
    {
        if (myFlag)
        {
//First state of the UIImages, 
            [UIView animateWithDuration:1.0 animations:^{
                //3D rotation C002
                CABasicAnimation* animation;
                animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
                animation.fromValue = @(0);
                animation.toValue = @(0.5 * M_PI);
                animation.repeatCount = 1;
                animation.duration = 1.0;

                [self.C002.layer addAnimation:animation forKey:@"rotation"];

                CATransform3D transform = CATransform3DIdentity;
                transform.m34 = 1.0 / 500.0;
                self.C002.layer.transform = transform;
            } completion:^(BOOL finished) {
                self.C002.hidden = YES; //Hide the first image 
                self.C005.hidden = NO; //Show the second and animate
                [UIView animateWithDuration:1.0 animations:^{
                    //3D rotation C005
                    CABasicAnimation* animation2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
                    animation2.fromValue = @(0.5 * M_PI); //begin where the first UIImage ends
                    animation2.toValue = @(1.0 * M_PI);
                    animation2.repeatCount = 1;
                    animation2.duration = 1.0;

                    [self.C005.layer addAnimation:animation2 forKey:@"rotation"];

                    CATransform3D transform2 = CATransform3DIdentity;
                    transform2.m34 = 1.0 / 500.0;
                    self.C005.layer.transform = transform2;
                } completion:^(BOOL finished) {
                    [self.C002.layer removeAnimationForKey:@"rotation"];
                    [self.C005.layer removeAnimationForKey:@"rotation"];
                }];

            }];
            myFlag = NO; // Set the flag to other state. 
        }
        else
        { //Heres try to turn everything back, but... not working. 
            [UIView animateWithDuration:1.0 animations:^{
                //3D rotation C005

                CABasicAnimation* animation;
                animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
                animation.fromValue = @(1.0 * M_PI); //begin where is in the last animation
                animation.toValue = @(0.5 * M_PI);
                animation.repeatCount = 1;
                animation.duration = 1.0;

                [self.C005.layer addAnimation:animation forKey:@"rotation"];

                CATransform3D transform = CATransform3DIdentity;
                transform.m34 = 1.0 / 500.0;
                self.C005.layer.transform = transform;
            } completion:^(BOOL finished) {
                self.C005.hidden = YES;
                self.C002.hidden = NO;

                [UIView animateWithDuration:1.0 animations:^{
                    //3D rotation C002
                    CABasicAnimation* animation2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];

                    animation2.fromValue = @(0.5 * M_PI);
                    animation2.toValue = @(0 * M_PI);
                    animation2.repeatCount = 1;
                    animation2.duration = 1.0;

                    [self.C002.layer addAnimation:animation2 forKey:@"rotation"];

                    CATransform3D transform2 = CATransform3DIdentity;
                    transform2.m34 = 1.0 / 500.0;
                    self.C002.layer.transform = transform2;
                } completion:^(BOOL finished) {
                    [self.C002.layer removeAnimationForKey:@"rotation"];
                    [self.C005.layer removeAnimationForKey:@"rotation"];
                }];

            }];
            myFlag = YES;
        }

    }
希望伙计们,你们可以帮助我。

0 个答案:

没有答案