私は多くの質問についてこのサイトをチェックしてきましたが、これは実際には私が実際に尋ねなければならない初めてのものです。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に行きました。彼らが持っているラボでは、私はエンジニアにそのことを尋ねました。彼は私が彼に示したコードはうまくいかないと思った。私は彼にメールを送り、彼は私に戻ってきます。
重要なことは、座標をテーブルからビューに変換することです。
私は今晩チャンスがあるときにそれを試してみます。入力いただきありがとうございます!しかし、私の以前のテストでは、私が観察したことは、どのビューをアニメーション化するかは重要ではないということです。重要なのはパスの開始位置です。 – Marcal