問題タブ [catransaction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1327 参照

ipad - サブレイヤーでのCAlayer変換は、ジェスチャーでちらつきます(ipad)

他のサブレイヤーがほとんど含まれていないCALayerがあります(実際にはCATextLayer)

ユーザーがiPadで通常のジェスチャーを行うときに、そのレイヤーに変換を適用したいのですが、正しく機能していないようです。CALayerを使用する目的は、そのレイヤーにのみ変換を適用して、すべてのサブテキストレイヤーが同じ変換で同時に影響を受けるようにすることでした。

何が起こっているのかというと、変換は前の位置と現在の位置の間でちらつくように見えます。何が問題になるのかよくわかりません...たとえば、2本の指でパンするジェスチャを実行すると、CaTextLayerの位置がジェスチャ中に常にちらつき、最後にすべてが新しい変換された位置に正しく配置されます。

ですから、私を大いに悩ませているちらつきを除いて、すべてがうまく機能しているようです。

知らないプロパティを設定する必要がありますか?バウンドやフレームにも関係があるのではないかと思います。

CATextLayerを作成する方法は次のとおりです(これは作成時に1回だけ実行され、正しく機能します)。

これが私のスーパーCALayerにそれらを追加する方法です

そして、これが私の変換を適用する方法です:

_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);

0 投票する
2 に答える
1779 参照

ios - CATransaction と CAAnimation の違いは何ですか?

いくつかの質問と重複している可能性がありますが、ここでは見つかりません。

0 投票する
1 に答える
481 参照

objective-c - CATransaction: ページめくりアニメーションを実装する際の問題

ページめくりアニメーションを実装しようとしています。これは、ユーザーがページをすばやく移動しない場合に機能します。

私のコードは次のようになります。

私が言ったように、これは正常に動作しますendTransformCATransform3DIdentityではcleanupFlip、次のページのスクリーンショットを準備しています。これにより、ページめくりアニメーションを実行できます。そして、私が作成しているスクリーンショットが問題のようです。ユーザーがクリックしてページをすばやく移動するとすぐに、アニメーションは発生しませんが、ページが変わるだけで、ページめくりのアニメーションはありません。animationInProgress古いアニメーションが終了する前に次のアニメーションを開始しないようにするフラグを設定することで改善されました。

わからないこと:animationInProgressアニメーションの最後にフラグを設定しているので、これで問題なく動作することを期待しているので、次の実行に備えてすべてを準備する必要がありますが、そうではありません...

シミュレーターでは、デバイスよりも速くクリックできます。次のページめくりを開始できるようになるまで、少し待つ必要があります。

スクリーンショットを作成しなくても (たとえば、空の画像を使用するだけで)、すべてが期待どおりに機能します。時間がかかると問題cleanupFlipがあるようです。

これを機能させる方法はありますか?

どうもありがとう!

0 投票する
1 に答える
840 参照

macos - CALayer Live Resize のパフォーマンスが低い

のビューのコンテンツがNSCollectionViewItemCALayers を介してプログラムで描画される UI があります。サイズ変更時にサブレイヤーのレイアウトを一定に保つために を使用してCAConstraintLayoutManagerいますが、そうするとパフォーマンスが非常に低下します。ウィンドウのサイズを変更するとCATextLayer、ルート レイヤーの幅に合うように 2 つの のサイズが変更され、1 つCATextLayerが右揃えになるように再配置されるため、アプリケーションはほとんどの時間をCGSScanConvolveAndIntegrateRGB関数の実行に費やしているようです ( Time Profiler インストゥルメントを使用しました)。

最も「高価な」レイヤー (表示される唯一のレイヤーであっても、最も途切れる原因となるレイヤー) は、ラップされた複数行CATextLayerです。パフォーマンスを向上させる方法がまったくわかりません(を使用せずCAConstraintLayoutManagerにレイヤーの配置を使用しようとしましたが、同じ結果が得られます)。誰かがこの問題を抱えていますか?それを回避する方法はありますか?

- (void)layoutSublayersOfLayer:(CALayer *)layerPS: レイアウト マネージャーをサブクラス化し、実行中にYES を設定してすべてのアニメーションを無効にkCATransactionDisableActionsしましたCATransactionが、役に立たないようです。

編集:テキスト レイヤーのフォント スムージングを無効にすると、パフォーマンスは少し (ごくわずか) 向上しましたが、_ZL9view_drawP7_CAViewdPK11CVTimeStampb (これは ATI Radeon ドライバーのスレッドによって呼び出されるものです。仮定する)。

0 投票する
1 に答える
4574 参照

ios - CATransaction によってトリガーされたアニメーションの完了を検出する方法

コントローラーのinitWithNibNameでビューコントローラーのメインビューのサブビューを作成して追加するだけのCALayerがあります。次に、次のアニメーションを実行します。

このアニメーションがいつ終了したかを知るにはどうすればよいですか? performSelector: 2 秒遅れます。アプローチは、それを行うための「正しい方法」ではないようです。

0 投票する
1 に答える
591 参照

ios - レイヤーアニメーションを使用した後、ビューアニメーションが突然消えました

CABasicAnimationとCATransactionを使用して、カスタムUIViewのいくつかのレイヤーをアニメーション化しています。

ただし、その後、ナビゲーションコントローラーの戻るボタンを使用してアプリの残りの部分に戻ると、ナビゲーションコントローラーはアニメーション化されなくなります。それから他のビューに行くときでさえも。

iOS5でiPadを使用しています。

0 投票する
1 に答える
1761 参照

objective-c - CATransaction ブロックに含まれるいくつかの CABasicAnimations をループする方法は?

Xcode 4.3.2 で iPhone 5.1 に Obj.-c を使用する。すべて同じ画像から CALayers の配列を作成します。次に、CATransactions を介してグループ化することにより、配列内の各 CALayer に CABasicAnimation を同時に適用したいと考えています。これはすべて一度に機能します。ただし、CATransactions に含まれる CABasicAnimations のブロックを繰り返し呼び出したいのですが、ブロックが同時に実行されるたびに各アニメーションのプロパティを個別に変更できるようにしたいと考えています。たとえば、各レイヤーのアニメーションのたびにランダムに変更したいアニメーションの from 値と to 値があります。同じ基本的なアニメーションを繰り返したいのですが、プロパティを変更します。アニメーションの repeatCount プロパティを高い値に設定しても機能しません。makeSwarm メソッド内で for ループを使用して animate メソッドを繰り返し呼び出してみましたが、animateDidStop を使用して animate メソッドの別の呼び出しを誘導しましたが、最終的には最後ではなく CATransaction ブロックで新しい呼び出しが行われ、またメソッド呼び出し自体 (animate メソッドの最後に [self animate]; を置く); そして、これはどれも機能しません。これが基本的なコードです。これは簡単だと思いますが、重要なことはわかりません。ありがとう、セス しかし、私は何か重要なものを見ていません。ありがとう、セス しかし、私は何か重要なものを見ていません。ありがとう、セス

ViewController.h

ViewController.m

0 投票する
2 に答える
2846 参照

animation - UIView アニメーションのループが終了するのを待つ最善の方法は何ですか?

複数をループしてそれぞれにアニメーションを実行しようとしていますUIViewsが、すべてのアニメーションがいつ終了したかを知りたいです。アニメーションのループが終了したときに関数を呼び出す最良の方法は何ですか? 代わりに、すべてが完了するまで待つ方法はありますか?

を使ってみsetAnimationDidStopSelectorましたが、起動しません。この場合、ゲーム ボードからいくつかの「チップ」をフェードアウトさせてから削除します (NumberedChipView は UIView のサブクラスです)。チップがボードから離れるまで、プレイを続けることはできません。

私もCATransaction無駄にしようとしました:

アップデート:

セレクターを起動できるようになりましたが、アニメーションのループが終了するのを待ちません。

0 投票する
3 に答える
881 参照

ios - iOS 3.2 の CATransaction + UIView

iOS 3.2 で非常にカスタムなアニメーションを実装する必要があるため、4.0 より前のブロック アニメーションも UIKit アニメーションも使用できません。Core Animation を使ってみました。

これが私のコードです:

残念ながら、それは機能しません。アニメーションなしで、ビューのサイズ/不透明度がすぐに変更されます。

これが私の試みです:

  • 新しいフレームをビューではなくそのレイヤーに設定しました(someView.layer.frame = ...)-ビューのサブビューのサイズが変更されなかったため、さらに悪化しました。
  • アクションの無効化オプションを YES と NO に設定しました。

ソリューション要件:

  • iOS 3.2 がサポートされている必要があります (ブロックなし)。
  • アニメーションは異なるビューに適用する必要があります (結果として、異なるレイヤーに適用されます)。
  • アニメーション カーブは非常に難しいので、定義済みのアニメーション カーブ (または、CA 言語では MediaTimingFunction) を使用できません。
0 投票する
1 に答える
3788 参照

objective-c - CoreAnimation:警告、コミットされていないCATransactionでスレッドを削除

アプリの実行中に、次の警告が表示されることがよくあります。

CoreAnimation:警告、コミットされていないスレッドを削除しましたCATransaction; バックトレースをログに記録するには、環境でCA_DEBUG_TRANSACTIONS=1を設定します。

このメッセージが時々表示される理由を誰かが知っていますか?クラッシュを引き起こしている可能性はありますか?