UIActivityIndi​​catorView在transitionWithView中出现后没有动画

时间:2012-01-28 17:02:14

标签: ios uiview ios5 uiactivityindicatorview

我的主视图有一个子视图,里面有一个UIActivityIndi​​catorView。最初,此子视图的hidden属性设置为YES

我希望这个子视图淡入屏幕。我使用以下代码来实现此目的:

[UIView transitionWithView:self.view
                  duration:3.0
                   options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                animations:^{
                    self.subviewWithActivitySpinnerInIt.hidden = NO;
                }

即使活动指示器设置为动画,但在使用上述代码显示后也不会设置动画。但是,如果我将上面的代码替换为下面的代码 - 在完全相同的位置 - 那么当活动指示符出现时它就是动画。

self.subviewWithActivitySpinnerInIt.hidden = NO;

知道发生了什么事吗?

(使用Xcode 4.2和iOS 5.)

1 个答案:

答案 0 :(得分:0)

您是否尝试过将代码添加到完成块?问题中缺少完成参数。

[UIView transitionWithView:self.view
                  duration:3.0
                   options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                animations:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; }
                completion:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; }];

作为替代方案,虽然它可能不适合您的需求,但您可能需要考虑使用animateWithDuration而不是transitionWithView。我认为以下代码是等效的:

[UIView animateWithDuration:3.0
                      delay:nil
                    options:UIViewAnimationOptionCurveLinear
                 animations:^{
                     self.subviewWithActivitySpinnerInIt.alpha = 1.0;
                 }
                 completion:nil ];