2012-01-31 41 views
3

我使用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]; 

然后,我创建在IB相关的UIImageView财产,并将其连接起来。

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

我把一个图像放到imageview中,在模拟器或我的iPod Touch上运行它,我看到滚动。

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

任何帮助,将不胜感激。

回答

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当你切换标签不会被调用。

相关问题