2

ユーザーが右から左にスワイプして次のビューなどに移動し、ユーザーが左から右にスワイプして戻る単純なプロジェクト(ストーリーボード)を試しています。スワイプに追従する遷移を実現したい (L-->R または R-->L)。

私はこれを見つけました:

-(void)perform {

    UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
    UIViewController *destinationController = (UIViewController*)[self destinationViewController];

    CATransition* transition = [CATransition animation];
    transition.duration = .25;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
    transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom



    [sourceViewController.navigationController.view.layer addAnimation:transition
                                                                forKey:kCATransition];

    [sourceViewController.navigationController pushViewController:destinationController animated:NO];

}

しかし、これはやるべきことをしていないようです。

説明:

私が横向きの場合(私のプロジェクトは横向きでのみ機能します)、ホームボタンが左側にある場合、アニメーションはTOPから来ます!!! 私が横向きでホームボタンが右側にあるとき、アニメーションは下から来ます!!!

左からと指定していますが。もう1つのことは、異なる風景を使用すると方向が変わることです(左または右のホームボタン)。

なぜこれが起こっているのですか?

4

2 に答える 2

0

非常に非正統的ですが、これは私がそれをした方法です。

iPadの向きを確認してから、左または右に移動する代わりに、実際に上下に移動します...わかりました、これは私が行った方法ですが、非常に非正統的です。

iPadの向きを確認してから、左または右に移動する代わりに、実際に上下に移動します...

if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)
{
      //Landscape Left

//.......
       transition.subtype = kCATransitionFromTop;

}
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)
{
      //Landscape Right

//......
       transition.subtype = kCATransitionFromBottom;

}
于 2013-02-17T21:13:57.483 に答える
0

ビューはナビゲーション コントローラーにありますか? 「プッシュ」スタイルのセグエを単純に使用してみましたか?

スワイプ ジェスチャ レコグナイザーで、次のように呼び出します。

[self performSegueWithIdentifier:@"NextScreenIdentifier" sender:sender];

正しい動作が得られるはずです (左から右へ / 右から左への遷移)。

于 2013-02-17T21:33:20.863 に答える