2

画面に既に UIView があり、検出したスワイプの種類に応じて、4 つの方向 (左、右、上、下) のいずれかから新しい UIView を「スライドイン」したいと考えています。スワイプジェスチャ情報の取得は既に完了しており、問題はありませんが、左にスワイプすると、別の UIView インスタンスが右から「スライドイン」するようになります。

具体的には、新しい UIView が右からスライドインすると、古い UIView がビューの外にスライドし始め、完全にビューから外れるまで左にスライドします。言い換えれば、元の UIView が見えなくなるまで、アニメーション中に両方の UIView を見ることができるという効果が欲しいです。たとえば、ホーム画面で左にスワイプすると、iPad でも同じタイプの効果が見られます。ホーム画面がビューの外にスライドすると、右からアプリ アイコンの別の画面にスライドします。左。達成したい唯一の注意点は、移行を途中で止めることはできないということです。

とにかく、ここに私がこれまでに持っているコードがあります-私は近くにいると思いますが、おそらくここで達成する必要があることを完了するための助けを得たいと思います:

    UIView *newView = [[UIView alloc] init];
    newView.frame = CGRectMake(0, 0, TileView.frame.size.width, TileView.frame.size.height);
    [TileView addSubView:view];
    CATransition *transitionAnimation = [CATransition animation];
    [transitionAnimation setDuration:1];
    [transitionAnimation setType:kCATransitionPush];
    [transitionAnimation setSubtype:kCATransitionFromRight];
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

UIView TileView は、viewController のサブビューです。画面の配置に関してすべてが一致するように、newView に対して他に行う設定はありますか? KCATransitionPush は私が探しているアニメーションのタイプだと思いますが、100% 確実ではありません

私がここで見逃していることへの助けは役に立ちます。

4

1 に答える 1

0

これら2つのプロパティも設定してみてください....

transitionAnimation.fromValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0.0, 0.0, 0.0)];
transitionAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(excursion, 0.0, 0.0)];
于 2013-03-13T14:59:36.847 に答える