持续淡入和淡出

时间:2016-05-20 04:54:57

标签: ios objective-c animation

我试图淡入和淡出我创建的光节点我不知道在哪里相应地调用函数,因此它将不断淡入淡出。我从来没有试过动画任何动画。

- (void)fadeOutIn:(UIView *)view duration:(NSTimeInterval)duration
{
    [self enumerateChildNodesWithName:@"//*" usingBlock:^(SKNode *node, BOOL *stop) {
        if ([node.name isEqualToString:@"light1"]) {
            [UIView animateKeyframesWithDuration:5 delay:2 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationCurveEaseInOut animations:^{
                node.alpha = 0;
            } completion:^(BOOL finished) {
          }];
        }
    }];
}

我应该在哪里调用这个函数?它会不断淡入淡出? 它应该在行动中被召唤吗? 谢谢

2 个答案:

答案 0 :(得分:2)

使用它来继续淡出。

-(void)viewDidAppear:(BOOL)animated{

[UIView animateKeyframesWithDuration:1 delay:0 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction animations:^{
    node.alpha = 0;
} completion:^(BOOL finished) {
    [UIView animateWithDuration:1 animations:^{  
        node.alpha = 1;
    } completion:nil];
}];
}

答案 1 :(得分:0)

    -(void) viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [objAnimate setAlpha:1.0];

        [UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionCalculationModeLinear | UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse animations:^{
            [objAnimate setAlpha:0.0];
        } completion:nil];
    }

这将在您的对象出现时为其创建连续淡入和淡出。如果要以编程方式创建自定义对象,然后使用此代码,请在视图中添加自定义对象后执行此操作(示例):

    objAnimate = [[UILabel alloc] initWithFrame:CGRectMake(20, 50, 200, 40)];
    objAnimate.backgroundColor = [UIColor lightGrayColor];
    [objAnimate setAlpha:1.0];
    [self.view addSubview:objAnimate];
    [UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionCalculationModeLinear | UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse animations:^{
            [objAnimate setAlpha:0.0];
        } completion:nil];

视图会在视图中添加后立即开始制作动画。