1

以下是我的代碼,用於在子視圖上添加表格時顯示淡入淡出效果。問題是代碼第一次工作。添加表後,當我點擊關閉時,子視圖按鈕表被刪除。但是,當我按下按鈕,以再次子視圖表添加淡入淡出效果不做工精細重複淡入淡出效果不起作用

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){ 

      }]; 

     }); 

,我使用

​​

從我的子畫面刪除我的表

回答

0

經過一番搜索,最後我發現了一些適用於我的情況。在這裏,otlTableRightView是你提到的是否工作正常出口爲我的UITableView

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

如果你想重複動畫你不應該removeFromSuperview你的子視圖!那麼所有的重複方法都沒有關係。

您也可以考慮對這種行爲的簡單的解決辦法:

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

正如你可以看到的選項,你可以添加多個參數。

+0

UIViewAnimationOptionCurveEaseInOut不能正常工作,但其他兩個選項 – Jasmeet

0

要刪除您的表視圖與淡入淡出效果嘗試這個..希望它的工作。

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