2012-01-31 14 views
3

ストーリーボードを使用してXcode 4.2で新しいタブ付きアプリケーションプロジェクトを作成します。 viewDidLoadで は、私は次のコードを追加します。2番目のタブを選択すると、最初のタブでアニメーションが停止し、再起動しません。

[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; 

イメージビューにイメージを置いて、シミュレータまたはiPod Touchでイメージを実行してスクロールします。

ただし、2番目のタブを選択して最初のタブに戻ると、アニメーションはすぐに表示されますが、上記をviewWillAppearに入れても再起動できません。私は多くの答えを通して検索し、それを解決することはできません。

ご協力いただければ幸いです。

答えて

4

あなたが扱っている問題は、ストーリーボードや特定のアニメーションではなく、タブ付きバーコントローラに固有のようです。問題は、別のタブに切り替えるとアニメーションが停止し、最初のタブに戻ると再開しないということです。

viewWillAppearでアニメーションを再度注文することはできません(上記のとおり)。viewWillDisappearでアニメーションを最初に削除した場合は、viewWillAppearで再度注文する必要があります。例えば

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

NB:あなたは、タブを切り替えるとviewWillUnloadが呼び出されませんので、アニメーションの削除コードは、viewWillDisappearではなくviewWillUnloadにする必要があります。

関連する問題