タグ付けされた質問 「core-animation」

27
UIView Infinite 360​​度回転アニメーション?
私はUIImageView360度回転させようとしていて、オンラインでいくつかのチュートリアルを見てきました。私はUIView、停止するか、新しい位置にジャンプすることなく、それらのどれも機能させることができませんでした。 どうすればこれを達成できますか? 私が試した最新のものは: [UIView animateWithDuration:1.0 delay:0.0 options:0 animations:^{ imageToMove.transform = CGAffineTransformMakeRotation(M_PI); } completion:^(BOOL finished){ NSLog(@"Done!"); }]; しかし、2 * piを使用すると、(同じ位置であるため)まったく移動しません。pi(180度)だけを実行しようとしても機能しますが、メソッドを再度呼び出すと逆方向に回転します。 編集: [UIView animateWithDuration:1.0 delay:0.0 options:0 animations:^{ [UIView setAnimationRepeatCount:HUGE_VALF]; [UIView setAnimationBeginsFromCurrentState:YES]; imageToMove.transform = CGAffineTransformMakeRotation(M_PI); } completion:^(BOOL finished){ NSLog(@"Done!"); }]; どちらも機能しません。それに行く180当時にリセットし、度、一瞬のために一時停止し0、再度開始する前に度。

17
UIViewアニメーションをキャンセルしますか?
UIView進行中のアニメーションをキャンセルすることはできますか?または、CAレベルまで下げる必要がありますか? つまり、私はこのようなことをしました(多分、アニメーションの終了アクションも設定しています): [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:duration]; [UIView setAnimationCurve: UIViewAnimationCurveLinear]; // other animation properties // set view properties [UIView commitAnimations]; しかし、アニメーションが完了してアニメーション終了イベントを取得する前に、それをキャンセルしたい(短くします)。これは可能ですか?ぐるぐる回ると、何人かが同じ質問に答えずに質問し、1人または2人がそれを実行できないと推測しています。

4
パースペクティブ変換をUIViewに適用するにはどうすればよいですか?
UIViewでパースペクティブ変換を実行したい(カバーフローで見られるような) これが可能かどうか誰かが知っていますか? 私はCALayerすべての実用的なプログラマーであるCore Animationポッドキャストを使用して調査しましたが、iPhoneでこの種の変換を作成する方法についてはまだ明確ではありません。 ヘルプ、ポインタ、またはサンプルのコードスニペットをいただければ幸いです。

8
iPhone UIViewアニメーションのベストプラクティス
iPhoneでビューの遷移をアニメーション化するためのベストプラクティスとは何ですか? たとえばViewTransitions、アップルのサンプルプロジェクトでは次のようなコードを使用しています。 CATransition *applicationLoadViewIn = [CATransition animation]; [applicationLoadViewIn setDuration:1]; [applicationLoadViewIn setType:kCATransitionReveal]; [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; [[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal]; しかし、次のようなコードスニペットがネット上に浮かんでいます。 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.75]; [UIView setAnimationDelegate:self]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES]; [myview removeFromSuperview]; [UIView commitAnimations]; 最善のアプローチは何ですか?スニペットも提供していただければ幸いです。 注: 2番目のアプローチを正しく機能させることができませんでした。

15
-[CALayer setNeedsDisplayInRect:]で暗黙的なアニメーションを無効にする
-drawInContext:メソッドにいくつかの複雑な描画コードを含むレイヤーがあります。必要な描画の量を最小限に抑えようとしているので、変更された部分だけを更新するために-setNeedsDisplayInRect:を使用しています。これは見事に機能しています。ただし、グラフィックスシステムがレイヤーを更新すると、クロスフェードを使用して古い画像から新しい画像に移行します。瞬時に切り替えたいのですが。 CATransactionを使用してアクションをオフにし、期間をゼロに設定してみましたが、どちらも機能しません。これが私が使っているコードです: [CATransaction begin]; [CATransaction setDisableActions: YES]; [self setNeedsDisplayInRect: rect]; [CATransaction commit]; 代わりに使用する必要があるCATransactionに別のメソッドがありますか(kCATransactionDisableActionsで-setValue:forKey:も試しましたが、同じ結果です)。

1
ここで「インスタンスメッセージのレシーバータイプ 'CALayer'は転送宣言です」とはどういう意味ですか?
コードのブロックをiOS4プロジェクトからiOS5に移植していますが、ARCで問題が発生しています。このコードは、画面キャプチャーからPDFを生成します。 PDF生成コード UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); renderInContext行 [captureView.layer renderInContext:pdfContext]; 次のエラーを生成します。 Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration ここで何が起こっているのでしょうか?

6
Core Animationでカスタムイージング関数を作成するにはどうすればよいですか?
iOSで(QuadCurve)にCALayer沿ってをCGPathうまくアニメーション化しています。しかし、私はAppleが提供するいくつかよりも面白いイージング関数(EaseIn / EaseOutなど)を使用したいと思います。たとえば、バウンスや弾性関数。 これらはMediaTimingFunction(ベジェ)で実行できます。 しかし、もっと複雑なタイミング関数を作成したいと思います。問題は、メディアのタイミングには、これらの効果を作成するのに十分なほど強力ではない3次ベジェが必要であるように見えることです。 (ソース:sparrow-framework.org) コード上記を作成するには、この非常にイライラになり、他のフレームワークでは、単純な十分、です。曲線は入力時間を出力時間(Tt曲線)にマッピングしており、時間位置曲線ではないことに注意してください。たとえば、easeOutBounce(T)= tは新しいtを返します。次に、そのtを使用して動き(またはアニメーション化する必要があるプロパティ)をプロットします。 だから、私は複雑なカスタムを作成したいのCAMediaTimingFunctionですが、どうすればよいのか、それが可能かどうかさえわかりません。代替案はありますか? 編集: 手順の具体例を以下に示します。非常に教育的:) オブジェクトをポイントaからbまでのラインに沿ってアニメートしたいのですが、上のeaseOutBounceカーブを使用して、ラインに沿ってオブジェクトの動きを「バウンス」させます。これは、aからbまでの正確な線をたどりますが、現在のベジェベースのCAMediaTimingFunctionを使用した場合よりも複雑な方法で加速および減速します。 その線をCGPathで指定された任意の曲線の動きにしましょう。それでもその曲線に沿って移動するはずですが、直線の例と同じように加速および減速するはずです。 理論的には、次のように機能するはずです。 移動曲線をキーフレームアニメーションmove(t)= pとして説明します。ここで、tは時間[0..1]であり、pは時間tで計算された位置です。したがって、move(0)はカーブの開始位置、move(0.5)は正確な中央、move(1)は終了位置を返します。タイミング関数time(T)= tを使用して移動のt値を提供すると、必要なものが得られます。バウンス効果の場合、タイミング関数はtime(0.8)とtime(0.8)に同じt値を返す必要があります(単なる例)。タイミング関数を置き換えるだけで、別の効果が得られます。 (はい、前後に移動する4つのラインセグメントを作成して結合することでラインバウンスを行うことは可能ですが、それは必要ありません。結局のところ、時間値を位置にマップする単純な線形関数です。) ここで意味が通じているといいのですが。

10
animationDidStopデリゲート内のCAAnimationを識別する方法は?
一連のCATransition / CAAnimationシーケンスが重複していて、アニメーションが停止したときにカスタム操作を実行する必要があるという問題がありましたが、animationDidStopのデリゲートハンドラは1つしか必要ではありませんでした。 ただし、問題がありました。animationDidStopデリゲート内の各CATransition / CAAnimationを一意に識別する方法がないようです。 CAAnimationの一部として公開されているキー/値システムを使用して、この問題を解決しました。 アニメーションを開始するときは、CATransition / CAAnimationのsetValueメソッドを使用して、animationDidStopの起動時に使用する識別子と値を設定します。 -(void)volumeControlFadeToOrange { CATransition* volumeControlAnimation = [CATransition animation]; [volumeControlAnimation setType:kCATransitionFade]; [volumeControlAnimation setSubtype:kCATransitionFromTop]; [volumeControlAnimation setDelegate:self]; [volumeControlLevel setBackgroundImage:[UIImage imageNamed:@"SpecialVolume1.png"] forState:UIControlStateNormal]; volumeControlLevel.enabled = true; [volumeControlAnimation setDuration:0.7]; [volumeControlAnimation setValue:@"Special1" forKey:@"MyAnimationType"]; [[volumeControlLevel layer] addAnimation:volumeControlAnimation forKey:nil]; } - (void)throbUp { doThrobUp = true; CATransition *animation = [CATransition …

5
transitionWithView内でrootViewControllerを変更するとビューがリークする
メモリリークを調査しているときsetRootViewController:に、遷移アニメーションブロック内で呼び出す手法に関連する問題を発見しました。 [UIView transitionWithView:self.window duration:0.5 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ self.window.rootViewController = newController; } completion:nil]; 古いビューコントローラー(置き換えられるビューコントローラー)が現在別のビューコントローラーを提示している場合、上記のコードは提示されたビューをビュー階層から削除しません。 つまり、この一連の操作... Xがルートビューコントローラーになる XはYを表すので、Yのビューは画面上に表示されます を使用transitionWithView:してZを新しいルートビューコントローラにする ...ユーザーには問題ないように見えますが、Debug View Hierarchyツールは、YのビューがZのビューの背後、つまり内にまだあることを明らかにしUITransitionViewます。つまり、上記の3つのステップの後、ビューの階層は次のようになります。 UIWindow UITransitionView UIView(Yのビュー) UIView(Zのビュー) 移行時に、Xのビューは実際にはビュー階層の一部ではないため、これは問題だと思います。 のdismissViewControllerAnimated:NO直前にX に送信するtransitionWithView:と、結果のビュー階層は次のようになります。 UIWindow UIView(Xのビュー) UIView(Zのビュー) dismissViewControllerAnimated:X に送信(YESまたはNO)した場合、completion:ブロックで遷移を実行すると、ビュー階層が正しくなります。残念ながら、それはアニメーションを妨害します。解雇をアニメーション化する場合、それは時間を浪費します。アニメーション化しないと、壊れているように見えます。 私は他のいくつかのアプローチ(たとえば、ルートビューコントローラーとして機能する新しいコンテナービューコントローラークラスを作成する)を試していますが、機能するものは何も見つかりません。この質問は随時更新していきます。 最終的な目標は、提示されたビューから新しいルートビューコントローラーに直接移行することです。

7
CATextLayerのテキストを明確にする方法
をCALayer追加CATextLayerして作成しましたが、テキストがぼやけて表示されます。ドキュメントでは、「サブピクセルアンチエイリアス」について話していますが、それは私にはあまり意味がありません。誰もCATextLayerが明確なテキストで作るコードスニペットを持っていますか? Appleのドキュメントのテキストは次のとおりです。 注:CATextLayerは、テキストのレンダリング時にサブピクセルアンチエイリアスを無効にします。テキストは、それがラスタライズされると同時に既存の不透明な背景に合成される場合にのみ、サブピクセルアンチエイリアスを使用して描画できます。テキストピクセルを織り込む背景ピクセルを用意する前に、サブピクセルアンチエイリアスが適用されたテキストを画像またはレイヤーに個別に描画する方法はありません。レイヤーの不透明度プロパティをYESに設定しても、レンダリングモードは変更されません。 2番目の文はcomposites、existing opaque background at the same time that it's rasterized. それを「素晴らしい」テキストにすると見栄えの良いテキストが得られることを意味しますが、どのように合成し、どのように不透明な背景にして、どのようにラスタライズしますか? 彼らがキオスクメニューの例で使用するコードは次のとおりです(iOSではなくOS Xですが、動作すると思います!) NSInteger i; for (i=0;i<[names count];i++) { CATextLayer *menuItemLayer=[CATextLayer layer]; menuItemLayer.string=[self.names objectAtIndex:i]; menuItemLayer.font=@"Lucida-Grande"; menuItemLayer.fontSize=fontSize; menuItemLayer.foregroundColor=whiteColor; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY offset:-(i*height+spacing+initialOffset)]]; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" attribute:kCAConstraintMidX]]; [self.menuLayer addSublayer:menuItemLayer]; } // end of for loop ありがとう! …


16
UIViewシェイクアニメーション
ボタンが押されたときにUIViewをシェイクさせようとしています。 http://www.cimgf.com/2008/02/27/core-animation-tutorial-window-shake-effect/で見つけたコードを適応させています。 ただし、次のコードを適応させてUIViewをシェイクしようとすると、機能しません。 - (void)animate { const int numberOfShakes = 8; const float durationOfShake = 0.5f; const float vigourOfShake = 0.1f; CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animation]; CGRect frame = lockView.frame; CGMutablePathRef shakePath = CGPathCreateMutable(); CGPathMoveToPoint(shakePath, NULL, CGRectGetMinX(frame), CGRectGetMinY(frame)); for (int index = 0; index < numberOfShakes; ++index) { CGPathAddLineToPoint(shakePath, NULL, …

4
カーブしたパスに沿ったビューまたは画像の動きをアニメーション化するにはどうすればよいですか?
私はコマースアプリケーションを開発しています。ショッピングカートに商品を追加するときに、商品の画像が曲がった経路をたどってカートタブに表示されるような効果を作成したいと思います。 このような曲線に沿って画像のアニメーションを作成するにはどうすればよいですか?

5
CALayerを即座に(アニメーションなしで)どのように移動しますか
ドラッグしようとしています CALayeriOSアプリで。 位置プロパティを変更するとすぐに、新しい位置にアニメーション化しようとし、あちこちでちらつきます。 layer.position = CGPointMake(x, y) どうすればCALayersすぐに移動できますか?Core AnimationAPIに頭を悩ませているようには見えません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.