【问题标题】:Continous fade in and fade out连续淡入淡出
【发布时间】:2016-05-20 04:54:57
【问题描述】:

我正在尝试淡入和淡出我创建的灯光节点,我只是不知道在哪里相应地调用该函数,因此它会不断淡入和淡出。从来没有尝试过为任何东西制作动画,这就是我所拥有的。

- (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 秒的时间增量内如此连续
  • 在 viewDidAppear 上调用您的函数,并在完成块中添加另一个动画块以继续淡入淡出。希望对您有所帮助。
  • 解决方案是否有效?
  • 谢谢最后一个问题。我有调用我的 mainScene.m 的 viewController 无论如何我可以将 viewDidAppear 放在 mainScene.m 中吗?因为当我将该函数放在 viewController 中时,我收到一条错误消息,提示 ViewController 没有可见接口声明扇区 enumarateChild

标签: ios objective-c animation


【解决方案1】:

使用它来继续淡入淡出。

-(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];
}];
}

【讨论】:

    【解决方案2】:
        -(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];
    

    视图在添加到您的视图后立即开始动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-07
      • 2017-09-24
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多