2011-10-30 7 views
0

私は多くの質問についてこのサイトをチェックしてきましたが、これは実際には私が実際に尋ねなければならない初めてのものです。UITableView内のUIViewのCAアニメーション。 iTunesのものと同じように

私はほぼ完成したアプリを持っています。主な機能は起動しています。私はアプリケーション全体を視覚的に魅力的にすることにのみ関心があります。このアプリは、科学的に関連するデータを扱うデータベースです。私は、ユーザーがDBにカスタムデータを保存できるようにして、ユーザーがデータを保存できる「連絡先のような」ビューを作成しておきたいと思っています。ビューには表があり、この表の内部にはセルにはUITextFieldsがあります。データを入力した後、ユーザーがボタンを押すと、textFieldの内容をキャビネットのようなアイコンにアニメートします。 iOSデバイス上のiTunesで何かを購入するときと非常によく似ています。 私は "スタティック"ビュー(UITableViewではなく)でそのアニメーションを行うことができました。開始点、終了点などで周りを回っているのは首の痛みですが、結局のところ実行可能です。 私は実際には従来の方法ではありませんが、実際は非常に効果的です。ボタンを押すと、UILabelが作成され、textFieldのテキストとしてテキストが設定され、次に、viewAnimationWithDurationブロックを使用してラベルがアニメーション化されます。ブロック内では、Core Animationを使用して、パス上のラベルのレイヤーをアニメートします。再び、慣習ではなく、まっすぐ進む。

私が抱えている問題は、UITableViewにあるので、textField上にラベルを作成できないということです。主に問題は、textFieldの位置(またはフレーム、境界、位置、私はすでに混乱しています)を知ることで、パスの開始位置です。

次のように私が使用しているコードは:

- (IBAction)saveCustom:(ID)、送信者{

UILabel *imageViewForAnimation = [[UILabel alloc] initWithFrame:CGRectMake(l1, l2, l3, l4)]; 
imageViewForAnimation.text=label.text; 
imageViewForAnimation.alpha = 1.0f; 
imageViewForAnimation.backgroundColor=[UIColor clearColor]; 
imageViewForAnimation.textColor=[UIColor blackColor]; 
imageViewForAnimation.adjustsFontSizeToFitWidth=YES; 

[self.view addSubview:imageViewForAnimation];  




[UIView animateWithDuration:10.0 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 


        // Set up path movement Core Animation begins 
        CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 

        CGPoint endPoint = CGPointMake(310, 380); // final point 
        CGMutablePathRef curvedPath = CGPathCreateMutable(); 

        CGPoint rootViewPoint = [imageViewForAnimation convertPoint:imageViewForAnimation.center toView:taula]; 


        CGPathMoveToPoint(curvedPath, NULL, rootViewPoint.x, rootViewPoint.y); // initial point 
        CGPathAddCurveToPoint(curvedPath, NULL, 100, 100, 100, 100, endPoint.x, endPoint.y); 
        pathAnimation.path = curvedPath; 
        CGPathRelease(curvedPath); 

        pathAnimation.fillMode=kCAFillModeForwards; 
        pathAnimation.removedOnCompletion=NO; 
        pathAnimation.duration=10.0f; 
        pathAnimation.delegate=self; 

        [imageViewForAnimation.layer addAnimation:pathAnimation forKey:@"savingAnimation"]; 
        [imageViewForAnimation release]; 
        //Core Animation ends 



        imageViewForAnimation.transform=CGAffineTransformMakeScale(0.60, 0.60); 
        // imageViewForAnimation.alpha=0.2; 
       } 
       completion:^(BOOL finished){ 

        [imageViewForAnimation removeFromSuperview]; 
       } ]; 

}

続行する方法上の任意のヘルプははるかになり感謝。

ありがとうございます!

更新日:

私はベルリンのApple Tech Talksに行きました。彼らが持っているラボでは、私はエンジニアにそのことを尋ねました。彼は私が彼に示したコードはうまくいかないと思った。私は彼にメールを送り、彼は私に戻ってきます。

重要なことは、座標をテーブルからビューに変換することです。

答えて

0

UITableViewは、UITableViewCellsの数を示します。セルに表示されるコントロールをカスタマイズする場合は、のcontentViewにコントロールを追加することができます。ニーズの複雑さに応じて、UITableViewDelegateまたはサブクラスUITableViewCellでこれを行います。 contentViewにサブビューを追加すると、組み込みのコントロール(例:textLabelまたはdetailTextLabel)に干渉する可能性が高いことにご注意ください。

追加のコントロールやアニメーション効果を配置するには、セルのcontentViewboundsを確認します。あなたのコントロールをサブビューとしてcontentViewとして追加し、アニメーション化してください。もはやそれらを必要としなくなったときに削除することを忘れないでください。

+0

私は今晩チャンスがあるときにそれを試してみます。入力いただきありがとうございます!しかし、私の以前のテストでは、私が観察したことは、どのビューをアニメーション化するかは重要ではないということです。重要なのはパスの開始位置です。 – Marcal

0

私にはかなり一般的なアニメーションと思われます。はい、効果的です。

解決策として、ユーザーが保存を要求したときに状態情報を保存するだけで済みます。また、アニメーションラベルをテーブルの上に描画します。利用可能なビューがある限り、大きな問題はないはずです。テーブルのスーパービューは多分でしょうか?

それ以外では、このテーブルに対してUIをどのように設定していますか?保存カスタムはどのようにアクティブになりますか(すべてのデータまたは特定のフィールドを保存しますか、アニメーションデータの必要な原点を引き出すためにアクセスできるセルを選択しましたか?

また、サブビューとして追加した後にUILabelをリリースしたことを忘れていない場合は、上記のコードに漏れています。

+0

アニメーションのご報告いただきありがとうございます。私はアップルのフォーラムでそれが良い練習であるかどうか尋ねたところ、私は何の反応も得なかった。あなたが言及している解決策に関しては、それはすでに私には明らかでしたが、問題は画面上にアニメーション表示されるビューを見つけることです。それはテーブルビューなので、場所は固定されていないので、私はその方法を知らない。 – Marcal

関連する問題