重复淡入淡出效果不起作用

Posted

技术标签:

【中文标题】重复淡入淡出效果不起作用【英文标题】:Repeat Fade Effect not working 【发布时间】:2013-12-12 10:31:17 【问题描述】:

以下是我的代码,用于在子视图上添加表格时显示一些淡入淡出效果。问题是代码第一次工作。添加表格后,当我点击关闭时,子视图按钮表格被删除。但是当我点击按钮再次在子视图上添加表格时,淡入淡出效果无法正常工作

 double delayInSeconds2 = 0.1;

        dispatch_time_t popTime2 = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds2 * NSEC_PER_SEC));
        dispatch_after(popTime2, dispatch_get_main_queue(), ^(void)


            self.otlTableRightView.frame=CGRectMake(100, 68, 300, 378);
            [self.otlTableRightView setAlpha:0.0];
            [self.otlRightFromView addSubview:self.otlTableRightView];


            [UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:1.2];

            self.otlTableRightView.frame=CGRectMake(43, 68, 300, 378);

            [UIView commitAnimations];


            [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^
                [self.otlTableRightView setAlpha:0.0];
            completion:^(BOOL done)

            ];

        );

我正在使用

[self.otlTableRightView removeFromSuperview];

从我的子视图中删除我的表格

【问题讨论】:

【参考方案1】:

如果你想要重复动画,你不应该removeFromSuperview你的子视图!那么所有的repeat方法都无所谓了。

对于这种行为,您也可以考虑更简单的解决方案:

[UIView animateWithDuration:0.5
                      delay:0.0
                    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut
                 animations:^
                     [self.otlTableRightView setAlpha:0.0];
                 
                 completion:^(BOOL done)
                [self.otlTableRightView setAlpha:2.0];
            ];

正如您在选项中看到的,您可以添加多个参数。

【讨论】:

UIViewAnimationOptionCurveEaseInOut 不工作,但你提到的其他两个选项工作正常【参考方案2】:

要删除带有淡入淡出效果的表格视图,试试这个。希望它能起作用。

> [UIView animateWithDuration:1.0
>                       delay:0.0
>                     options: UIViewAnimationOptionCurveEaseInOut
>                  animations:^
>                      [self.otlTableRightView setAlpha:0.0];
>                  
>                  completion:^(BOOL done)
>                 [self.otlTableRightView removeFromSuperview];
>             ];

【讨论】:

【参考方案3】:

经过一番搜索,我终于找到了适合我的情况。在这里,otlTableRightView 是我的 UItableView

的出口
            self.otlTableRightView.alpha = 0;
            [UIView beginAnimations:@"fade in" context:nil];
            [UIView setAnimationDuration:2.0];
            self.otlTableRightView.alpha = 1.0;
            [UIView commitAnimations];

【讨论】:

以上是关于重复淡入淡出效果不起作用的主要内容,如果未能解决你的问题,请参考以下文章

拖动或滑动时猫头鹰轮播淡入淡出效果不起作用

动画淡入/淡出标题按钮不起作用

Bootstrap 4:轮播淡入淡出过渡不起作用

AngularJS 1.2从0到0.5的淡入淡出动画不起作用

使用css淡入和淡出文本[重复]

使用 CSS 过渡的滑动 + 淡入淡出效果