选择第二个选项卡会在第一个选项卡中停止动画,但不会重

时间:2012-01-31 03:45:43

标签: ios animation tabbar

我使用Storyboard在Xcode 4.2中创建了一个新的选项卡式应用程序项目。 在viewDidLoad中,我添加以下代码:

[UIView animateWithDuration:30
                      delay:0
                    options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear
                 animations:^(void) {
                     CGRect imageViewFrame = self.scrollingImageView.frame;
                     imageViewFrame.origin.x = CGRectGetWidth(imageViewFrame) / -2;
                     self.scrollingImageView.frame = imageViewFrame;
                 } completion:nil];

然后我创建关联的UIImageView属性并在IB中连接它。

@property (nonatomic, strong) IBOutlet UIImageView *scrollingImageView;

我将图像放入imageview,在模拟器或iPod Touch中运行,我看到滚动。

但是,当我选择第二个选项卡然后返回第一个选项卡时,动画会立即显示,即使我将上述内容放入viewWillAppear,也无法重新启动。我搜索了很多答案,无法解决。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

您正在处理的问题似乎特定于标签栏控制器,而不是故事板或特定动画。问题是,当您切换到其他选项卡时,动画将停止,当您返回第一个选项卡时,它不会恢复。

viewWillAppear中再次订购动画不起作用(如您所述),但如果您先在viewWillDisappear中删除动画,则在viewWillAppear中再次对其进行排序应该有效。例如

- (void)viewWillDisappear:(BOOL)animated
{
    [self.view.layer removeAllAnimations]; // or whatever you need to use to remove your specific animation
}

注意:动画删除代码应该在viewWillDisappear而非viewWillUnload,因为切换标签时不会调用viewWillUnload