問題タブ [core-animation]
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.
iphone - Core Animation を使用して、自分のクラスのプロパティ値を経時的に補間するにはどうすればよいですか?
具体的には、以外のタイプのプロパティで CA を使用しようとしています。
- 整数と倍精度
- CGRect、CGPoint、CGSize、および CGAffineTransform 構造体
- CATransform3D データ構造
- CGColor と CGImage のリファレンス
および CALayers または NSViews 以外のオブジェクト内
cocoa - resizeSubviewsWithOldSize の呼び出し中にアニメーター プロキシでコア アニメーションをトリガーするにはどうすればよいですか?
ウィンドウのサイズに応じて、2 つのレイアウトのいずれかに配置する NSView がいくつかあります。
関連するスーパービューが resizeSubviewsWithOldSize メソッドを受け取ったときにレイアウトを調整しています。
これは機能しますが、変更をアニメーション化したいと思います。当然、新しいフレームを設定するときにアニメータープロキシを呼び出してみましたが、ユーザーがまだドラッグしている間はアニメーションは実行されません。アニメーションが予定されている前にマウスを放すと、アニメーションの最後尾を見ることができますが、それまでは何もありません。kCATransactionDisableActions が NO に設定されていることを確認しようとしましたが、役に立ちませんでした。
新しいアニメーションを開始して、サイズ変更中に実際に実行することはできますか?
iphone - ボタンのオーバーフローテキストをスクロールする簡単な方法は?
ボタンコントロールに表示するには長すぎるテキストのスクロールに関する情報を見つける可能性のある例やリソースはありますか?私はこれらの線に沿って何かを考えています。
- オーバーフローを示すために、末尾に「...」を付けて、現在の四角形に収まるだけのテキストを表示します。
- たとえば1秒間一時停止してから、テキストをゆっくりと右端までスクロールして、文字列の右側の部分を表示します。
- オーバーフローを示すために、先頭に「...」を付けて、現在の四角形に収まるだけのテキストを表示します。
- すべてを逆にやり直します。
特定のモバイルデバイスで「コア」または組み込みの「アニメーション」フレームワークを使用してこれを行う簡単な方法はありますか?
[編集]人々は私が達成しようとしていることが適切かどうかにもっと焦点を合わせていると思うので、もう少し詳細を追加したいと思いました。ボタンは雑学クイズゲームの答えのためのものです。特定のUI機能は実行しませんが、回答を表示するためのものです。Apple自身がiPodNanoのiQuizトリビアゲームでこれを行っており、ボタンの幅よりも長い答えに対する非常にエレガントなソリューションだと思います。
その「...」の場合、これは難しい部分です。この要件を削除したとしましょう。ボタンのラベルをフルサイズにして、ボタンのクライアントrectにクリップし、いくつかのアニメーションメソッドを使用してクリッピングrect内でスクロールすることはできますか?これにより、楕円を除いたほぼ同じ効果が得られます。
iphone - 2D シーンで「虫めがね」を作成する最良の方法は何ですか?
私は、プレイヤーがレンズ (虫眼鏡など) を通して平面 (壁など) を見られるようにする必要があるゲームに取り組んでいます。ゲームは iPhone で実行する予定なので、Core Animation または OpenGL ES を選択します。
私の最初のアイデア (まだ試していません) は、Core Animation を使用してこれを行うことです。
- CALayers を使用して壁とその上にオブジェクトを作成します。
- CALayer の
renderInContext:
方法を使用して、背景レイヤーとして壁の画像を作成します。 - 画像をレンズの形にトリミングして拡大し、背景の上に描画します。
- その上にレンズ枠と「光るガラス」レイヤーを描きます。
ノート:
- 私は OpenGL よりもコア アニメーションに精通しているので、OpenGL でこれを行うにはもっと良い方法があるかもしれません。(教えてください!)
- ビューにアタッチされていない CALayer を使用している場合、すべてのアニメーションを自分で管理する必要がありますか? または、それらを手動で実行する簡単な方法はありますか?
- 3D 視点は重要ではありません。平らな壁を拡大しているだけです。
- 上記のすべてを行うと、スムーズなアニメーションには遅すぎるのではないかと心配しています。
これを書くために多くのコードをコミットする前に、私の質問は、上記の計画に落とし穴があるかどうか、またはこれを行うためのより簡単な方法をお勧めできますか?
iphone - 任意のポイントを中心にレイヤーを回転させる Core Animation
Core Animation を使用して任意の点を中心にレイヤーを回転するにはどうすればよいですか? (私の場合、回転させたいレイヤー内にないポイント)
アンカーポイントを変更するたびに何か問題が発生しない限り、レイヤーの位置も変更されるため、アンカーポイントを変更せずにこれを行うことを好みます。
私はそのようなことを試みましたが、うまくいきませんでした:
回転中に回転軸が動いているように見えます。
ios - CALayer を即座に (アニメーションなしで) 移動する方法
CALayer
iOS アプリでをドラッグしようとしています。
位置プロパティを変更するとすぐに、新しい位置にアニメーション化しようとし、あちこちでちらつきます。
どうすればCALayers
瞬時に移動できますか? Core Animation API について理解できないようです。
iphone - アニメーション後、ビューの位置がリセットされます
ビューを上から下にスライドさせようとしています。これは大したことではありません、私はこれに使用CABasicAnimation
しました。問題は、ビューを削除したいときです。このアニメーションを使用します。
これは、ビューを完全にアニメーション化します。しかし、アニメーションが終了すると、私のビューが再び表示されます。だから私はこの行を追加しました:
これによりビューが削除されますが、アニメーションはありません。そこで、このデリゲートに削除コードを追加することにしました。
これで、アニメーションが機能し、ビューが消えますが、アニメーションの後でビューが表示され、次にanimationDidStop
デリゲートが呼び出されてビューが消えるような、ビューの表示と非表示が速くなることがあります。これは明らかにひどいことです。私は何が間違っているのですか?
objective-c - Core Animation で onOrderOut のカスタム アニメーションを使用するにはどうすればよいですか?
Core Animation では、CALayer ベースのクラスに actionForKey メソッドを実装することで、カスタム アニメーションを使用できます。
その後、アニメーションを作成し、それをonOrderIn
アクション (つまり、レイヤーが別のレイヤーに追加されたとき) に返すことができます。これはうまくいきます。同じことを行うとonOrderOut
(つまり、レイヤーがそのスーパーレイヤーから削除されます)、返されたアニメーションは無視され、代わりにデフォルトのアニメーションが適用されます。
私の目標は、レイヤーをズームイン ( onOrderIn
) およびズームアウト ( onOrderOut
) することです。
ズームインは機能しますが、ズームアウトは機能しません。代わりに、デフォルトのフェードアウト アニメーションが使用されます。
別のマシンでこれを入力しているため、コードにはタイプミスが含まれている可能性があります。
誰でも助けることができますか?
iphone - TouchesEnded イベントに優先するタイマーおよびアニメーション イベント
TouchesBegan オーバーロードで最初に設定した NSTimer を使用して、タップ アンド ホールド ハンドラーを実装しました。
しかし、私が実際に望んでいるのは、タッチが保持されている間、アクションが連射で連続して実行されることです。そのため、タイマーの期限が切れると、ハンドラーを呼び出して作業を行います。これにより、別のタイマーが設定され、TouchesEnded が入ってキャンセルされるか、別の終了条件が満たされるまで、サイクルが続きます。
これは、ハンドラー コードが同時にアニメーションをトリガーするまでは正常に機能します。これで、アニメーション イベントとタイマー イベントがオフになり、TouchesEnded も処理する必要があります。
私が見つけたのは、アニメーションがトリガーされ、タイマーを0.025秒未満に設定した場合、タイマーサイクルが停止するまでTouchesEndedイベントが発生しないことです(他の終了条件)。より遅いタイマーを設定するか、アニメーションをトリガーしないと、動作します (TouchedEnded がすぐに表示されます) が、私が望むものではありません。
明らかに、これはすべてデバイス上にあります (リリース ビルド - NSLogs なし) - sim ではすべて正常に動作します
これらのイベントの相対的な優先度を設定する方法はありますか?それとも、ここで明らかな何かが欠けている可能性がありますか?
この例では、完了するまで視覚的なフィードバックなしで継続的な部分を実行することで、これを回避しました (このユーザーの観点からすると、これは瞬時です)。今のところこれでいいと思います。私はまだこれについてもっと考えを聞きたいと思っています (Jeffrey のアイデアは良かったです) が、今はテンターフックを待っているわけではありません.
objective-c - レイヤーに裏打ちされたビューとちらつきコントロール
NSBox コントロールを含むウィンドウがあります。その NSBox には、他のいくつかのコントロール (ポップアップ、テキスト フィールドなど) があります。
同じ NIB ファイルに、特定の条件下で最初のコントロールと交換したいコントロールで満たされた 2 つの NSBox があります。素敵なクロスフェード効果でこれを実現したいので、次のようにします。
NSWindowController の-awakeFromNib
メソッドで:
ビューを切り替える方法では、次のコードを使用します。
これは問題なく機能し、期待どおりにビューがクロスフェードします。問題は、ビューのコントロールが明確な理由もなく消えることがあるということです。常に同じビューとは限りません (ただし、NSPopUpButton は特にその傾向があるようです)。通常、フォーカスがあると再び表示されます。
すべてのコントロール レイヤーもバッキングする必要がありますか?
更新: 明示的なグループ化でアニメーションをラップしても違いはありませんでした。Nib ファイルで setWantsLayer をオンにしても違いはありませんでしたが、興味深いのは、私がそうすると、含まれているビューがクリックされるまで NSPopupbuttons が消えることです。NSPopupbuttons でレイヤーを手動で設定しても、違いはありませんでした。
他の人がこの問題を抱えているようですが、投稿された解決策が見つかりません:
http://www.cocoabuilder.com/archive/message/cocoa/2008/3/30/202691 http://www.cocoabuilder.com/archive/message/cocoa/2008/4/25/205134