2011-09-13 11 views
0

タブを切り替えるときに誰かがプロセスをアニメーション化しているのですか?タブ切り替えのプロセスをアニメ化する

私は現在、2つの問題でこれを行っています。

1:私のUIControlの色がぼやけます。 2:最初にタブを切り替えてから、アニメーションを実行します。

ナビゲーションスタックにビューをプッシュするときに効果のようなものを実装したいと思います。

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:bookingVC.view cache:YES]; 
[UIView commitAnimations]; 
[self.tabBarController setSelectedIndex:0]; 

今はアニメーション効果がありません。

NSArray *tabBarVC = [self.tabBarController viewControllers]; 
UINavigationController *firstTabNC = [tabBarVC objectAtIndex:0]; 
BookingViewController *bookingVC = (BookingViewController *)[[firstTabNC viewControllers] objectAtIndex:0]; 
[bookingVC setNSStringProperty:newString]; //this string will be displayed on a UITextField whenever viewDidAppear; 

// So, I need some animation here when I switch tabs to make it more obvious that the UITextField is updated. 
[self.tabBarController setSelectedIndex:0]; 

私自身のアニメーションを作成することについて全く迷っています。私をガイドしてください。私はプレゼンテーションをより良くするためのアイデアを公開しています。おかげさまで

答えて

0

didSelectItem:であなたのアニメーションシーケンスを配置してみてください。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

はその後modalViewコントローラを設定し、そこからページカール効果をアニメーション化。

+0

同じ問題が発生しました。 –

+0

正確には、タブの選択をアニメーション化することは何も行いません。 – WrightsCS

+0

私の答えを編集しました。 – WrightsCS

1

アニメーション化の前iOS4の方法を使用する必要がある理由は何ですか?アニメーションブロックは、これを簡素化:

[UIView animateWithDuration:1.0 
         delay:0 
        options:UIViewAnimationOptionTransitionCurlUp 
       animations: 
^{ 
     // show your desired view however you do it 
} 
       completion: 
^(BOOL finished) { 
     [self.tabBarController setSelectedIndex:0]; 
}]; 

EDIT:申し訳ありませんが、私はあなたが愚かな...何とかビュー遷移をしていたピックアップしませんでした。そのような場合のために、他のブロックベースの方法があります:

[UIView transitionWithView:bookingVC.view 
        duration:1.0 
        options:UIViewAnimationOptionsTransitionCurlUp 
       animations: 
^{ 
    // do view transitioning here 
} 
       completion: 
^(BOOL finished) { 
    [self.tabBarController setSelectedIndex:0]; 
}]; 

EDIT 2:さてさて、あなたはこのすべての文脈でいくつかの助けを必要としているように見えるようにします。 UITabBarControllerDelegateプロトコル(カスタムクラスが実装する)のアクティブなタブの変更をアニメーション化する必要があります。特に、tabBarController:didSelectViewController:の方法。

私はあなたが最初にあなたが偶然同じタブにタブからの移行をアニメーション化していないことを確認するためにtabBarController:shouldSelectViewController:メソッドをオーバーライドしてお勧めします:

didSelectViewController:
- (BOOL)tabBarController:(UITabBarController *)tabBarController 
    shouldSelectViewController:(UIViewController *)viewController 
{ 
    return viewController != [tabBarController selectedViewController]; 
} 

は、アニメーションを実行します。この機会にこのコードを書き直す機会を得ようとしています。この方法では、タブバーコントローラのselectedIndexが自動的に処理され、bookingVC.viewで行っていたことは直接遷移に置き換えることができるためです1アクティブなタブコントローラ間(選択)新しい:私はあなたのアニメーションのオプションの一部としてUIViewAnimationOptionsShowHideTransitionViewsを使用し、ここで

- (void)tabBarController:(UITabBarController *)tabBarController 
didSelectViewController:(UIViewController *)viewController 
{ 
    [UIView transitionFromView:[tabBarController selectedViewController].view 
         toView:viewController.view 
         duration:1.0 
         options:UIViewAnimationOptionsTransitionCurlUp | 
           UIViewAnimationOptionsShowHideTransitionViews 
        completion:nil]; 
} 

注意。私たちのアニメーションは既にアクティブなタブを変更しているシステムの上にあるので、システムと同じ時間にビューの階層からビューを削除しようとしても、それを気にしないでください。

+0

@darvidsOn。私は 'ここでの変遷を見るにはどうすればいいのですか? 'options:'パラメータはすでに私が望んでいたアニメーションをすでに述べていると思いました。 –

+0

はい、ビューの切り替え先の状態を選択していません。あなたは、トランジションの一部として、どんな要素を並べ替えたり、移動したり、非表示にする必要があります。 – darvids0n

+0

申し訳ありませんが、私は本当にこれに無責任です。あなたはより平凡な言葉で説明できますか?私は、タブのプロパティを設定した後、タブの切り替えのプロセスをアニメートしたいだけで、何か不思議なことは必要ありません。 –