选择第二个选项卡会停止第一个选项卡中的动画并且不会重新启动

Dav*_*aun 5 animation tabbar ios

我使用故事板在 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];
Run Code Online (Sandbox Code Playgroud)

然后我创建关联的 UIImageView 属性并将其连接到 IB。

@property (nonatomic, strong) IBOutlet UIImageView *scrollingImageView;
Run Code Online (Sandbox Code Playgroud)

我将图像放入图像视图中,在模拟器或我的 iPod Touch 中运行它,然后我看到滚动。

但是,当我选择第二个选项卡然后返回到第一个选项卡时,动画会立即完成看起来的内容并且我无法让它重新启动,即使我将上述内容放入 viewWillAppear 中。我已经搜索了很多答案,但无法解决。

任何帮助,将不胜感激。

aus*_*s99 5

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

再次订购动画viewWillAppear不起作用(如您所述),但如果您首先删除 中的动画viewWillDisappear,那么再次订购它viewWillAppear应该可以工作。例如

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

注意:动画移除代码应该在 inviewWillDisappear而不是 in viewWillUnload,因为viewWillUnload在切换选项卡时不会被调用。