UIView使用完成处理程序阻止动画并将UIViews设置为隐藏

时间:2011-02-17 05:13:29

标签: iphone uiview core-animation hidden uigesturerecognizer

我热衷于iOS 4中的新块动画。即语法

  [UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionAllowUserInteraction  animations:^
        {
              someview.alpha = 0

        } completion::^(BOOL finished) 
             {
                 focusAndExposureBox.hidden = true;
           }];

我有一个案例,我在手势结束时使用手势识别器和动画视图。我有一个完成处理程序,它将someview设置为隐藏(出于性能原因,我需要这样做)。由于设置了隐藏属性,通常会阻止交互。我之前的解决方案是使用上一个动画风格和animationDidStop处理程序

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.25];
someview.alpha = 0;
[UIView commitAnimations];

但是,如果可能的话,我想使用更新的样式,因为它有更简洁的方法在动画结束后执行操作,并且是Apple推荐的。所以,目前我正在使用这个hackery:

 [UIView animateWithDuration:1 delay:0 
      options:UIViewAnimationOptionAllowUserInteraction animations:^{

           someview.alpha = 0;

       } completion:^(BOOL finished) {


[someview performSelector:@selector(setHidden:) withObject:[NSNumber numberWithBool:true] afterDelay:1];

            }];

有没有人知道在这种情况下防止阻止的方法?

1 个答案:

答案 0 :(得分:0)

如果你将Gesture Recognizers与委托一起使用,你应该能够避免阻塞问题,因为委托函数将独立于主线程被调用。