2011-10-07 4 views
2

最近、iOS 5.0 SDKを使用するようにアプリケーションを更新しました。その中で、私はAlex Fajowski's OpenFlowカバーフローの実装を使用しています。iOS 5.0でOpenFlowを正しく動作させるにはどうしたらいいですか?

iOS 5.0でアプリケーションを実行すると、画像をスワイプするときにOpenFlowが不正な変換またはZ再配置を行っていることがわかりました。

OpenFlowをiOS 5.0 SDKで正しく動作させるためにできることはありますか?

+0

は失礼transfomationの画像を投稿してくださいいずれかを有効にすることができます:) – jrturton

+0

はい、私は同じ問題に直面しています、それは3D効果のイメージフリップのように見えます。誰かがいれば何らかの解決法を提供してください。 –

+0

私はスクリーンショットを作成できません。なぜなら、無礼はスワイプで発生し、非常に速いからです。 –

答えて

2

今日、私はついにこの問題の解決策を見つけました。明らかに、iOS 5では、z配置がもうアニメーション化されていません(あまりにも悪いので、ドキュメンテーションがそう言います)。これは、CATransform3Dへの正しい移行を含めることによって、このバグが修正される理由です。以前

leftTransform = CATransform3DIdentity; 
    leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f); 
    rightTransform = CATransform3DIdentity; 
    rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f); 

は、今では次のようになります。

leftTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION); 
    leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f); 
    rightTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION); 
    rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f); 

は、それが私を助けていたとして、それは、君たちがお役に立てば幸いです。

+0

ニース、ありがとう!間違いなくgithubを使って修正を提出し、問題を解決する必要があります(https://github.com/thefaj/OpenFlow/issues/21)。投稿したのはあなた自身だと思いますか? – boliva

+0

これは間違いなく改善をもたらしますが、アニメーションはそれまでと同じくらい滑らかではありません。 – boliva

7

あなたがここにあるものよりも改善しましたが、それはスムーズに動作するようになりました(これは以前のようにiOS 4にあった方法です)。代わりに、あなたは(-setUpInitialStateに)上記のもののAfOpenFlowView.mで

、:

leftTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION/2.0); 
leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f); 
rightTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION/2.0); 
rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f); 

インサイド-layoutCover:selectedCover:

CGFloat newZPosition = SIDE_COVER_ZPOSITION/2.0; 

...

:アニメーションは、次のコードを配置します代わりにやっての今
CABasicAnimation *zPositionAnimation = [CABasicAnimation animationWithKeyPath:@"zPosition"]; 
[zPositionAnimation setToValue:[NSNumber numberWithFloat:newZPosition]]; 
[zPositionAnimation setDuration:(animated ? .3 : 0.0)]; 
[zPositionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
[zPositionAnimation setRemovedOnCompletion:NO]; 
[zPositionAnimation setFillMode:kCAFillModeForwards]; 

、:

aCover.layer.zPosition = newZPosition; 

でそれを置き換えます

[aCover.layer addAnimation:zPositionAnimation forKey:nil]; 

あなたは条件付きによっては、それは、iOSの4または5

ベストで実行されているかどうかを

+0

私の解決策を試しましたか?それは動作しましたか? –

+0

はい、うまくいきましたが、アニメーションの「滑らかさ」に欠けていました。これは私が今投稿したものを追加することで修正されました(これは当初のコメントに基づいています)。 – boliva