2011-12-09 9 views
0

私はUIViewを持っています。これはUIViewAnimationOptionTransitionFlipFromTopのようには見えないので、その軸はビューの中央に配置されます。ビューのtopに軸を持たせたいので、それは紙のパッドがtop axis(ページの剥離ではない)からどのように反転するかと同様に反転します。UIViewアニメーションフリップ、軸を上に表示

[UIView transitionWithView:self.view duration:0.6 
        options:UIViewAnimationOptionTransitionFlipFromTopAxis // <---- Wish there was an option like this     
       animations:^{ 
        // Exchange the views here 


       } completion:NULL]; 

標準のUIViewアニメーションオプションではこれを行うことはできません。フリップ軸をコントロールできる、これに代わるものは何ですか?

答えて

3

最も簡単な方法は、背の高い、オフセットのある透明なコンテナビューにフリップしたいビューを囲み、そのコンテナを反転することです。言い換えれば、

|-----| 
    |  | 
    | B | 
    |  | 
0 |  | 
    ||---|| 
    || A || 
    ||---|| 
    |-----| 

あなたが元に戻したいと思うビューです。 Bはコンテナです。 0が画面の上部です。 Bへのトランジションを適用します。その真ん中にBをひっくり返して、Aをその上にひっくり返します。

さらに複雑な作業を行い、Core Animationを使用して自分でフリップを実装することもできますが、これはもう少し簡単です。

編集:あなたは基本的にあなたが何をする必要があるか、Core Animationのアプローチを取りたい場合は

を横軸、すなわちtheLayer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0)のまわりでそれを回転させる層にCATransform3Dを適用しています。しかし、それはあなたの望むものではないので、その中間でそれを反転させるので、レイヤーのanchorPointをデフォルト値(0.5, 0.5)から(0.5, 0)に変更する必要があります。その結果、「原点」がその中央の中央になりますエッジ。また、hereのように、CATransform3Dのm34メンバを使用して、フリップトランスフォームにパースペクティブエフェクトを適用することもできます。

+0

私はこのアイデアが好きですが、Core Animationがもっと柔軟になるかどうかは疑問です。私の実装は、私が記述したものより進んでおり、このような複数のフリップビューを使用します。 CAの方が速いでしょうか?おそらく –

+0

。それについて詳しく解説する私の答えを更新しました。 –

+0

私はこれを試して、次のエラーが発生しました:セマンティック問題:互換性のないタイプ 'CATransform3D'(別名 'struct CATransform3D')から 'CGAffineTransform'(別名 'struct CGAffineTransform')に割り当てます。私は何を間違えたのですか? –

関連する問題