6

googleとstackoverflowのすべての投稿を検索しましたが、このパズルを解くことができません。新しいタスクを追加するときに、今では有名なtodoアプリ「Clear」が行う効果を再現しようとしています。それらにはある種のアニメーションがあり、上から新しいタスクがある種の3Dキューブ効果で表示されます。彼らが持っている特別なことは、よく見ると、左下と右下の角が常に同じ場所にあるということです。

現在、私は次のものを持っています:ポイント0,0に設定された320x460の1つのUIViewとポイント(0、-460)に設定された320x460の1つのUIView。私が欲しいのは、一番上のUIViewが、一番上からクリアするのと同じ立方体効果で下に来ることです。これは私がこれまでに持っているものです:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //startLoc is defined globally to remember the first position
    startLoc = [[touches anyObject] locationInView:self];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint location = [[touches anyObject] locationInView:self];
    float difference = location.y-startLoc.y;         

    if(diff > 0 && diff < 90)
    {
        //Init the transform
        CATransform3D transform = CATransform3DIdentity;
        transform.m34 = perspective;
        //Rotate (radians is a degree-to radians function)
        transform = CATransform3DRotate(transform, radians(90-diff), 1.0f, 0.0f, 0.0f);
        //Also translate the view down        
        transform = CATransform3DTranslate(transform, 0.0f, 230+diff, 0.0f);
        //the 230 is necessary I think for the Anchorpoint but I'm not sure
        secondView.layer.transform = transform;
}    

}

どういうわけか動作しますが、正しくは機能しません。回転するとすぐにビューが大きくなり、左下と右下のコーナーがビューから外れます。ビューを小さくしてから3Dスケールを実行すると、それも台無しになります。レイヤーのzPositionを正しく設定することで、画像の半分が消えるという問題はすでに解決しましたが、これは私が知る限りです。他のプロジェクトのコードを使用しようとしましたが、それらの3Dキューブ効果はすべて「クリア」アプリと同じではありません。近づいているのはiCarouselプロジェクトだけですが、アプリから正しいコードを使用できず、動作させることができません。誰かが私を助けることができますか?

4

2 に答える 2

2

GitHub mystcolor/JTGestureBasedTableViewDemoでオープンソースの実装を見ることができます

于 2012-05-04T07:10:47.703 に答える