問題タブ [calayer]

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 投票する
2 に答える
581 参照

iphone - ひーっ!デバッガーは「範囲外」と言っています!

何が問題なのか想像もつきません。私はかなりのアプリを作成し、「レンダリング」には CALayers のみを使用することにしました。

位置プロパティの変更がアニメーション化されるのを見たとき、アニメーション化せずに位置を設定するために、tanCenter と呼ばれるカスタムの getter-setter "abstract" プロパティを実装することにしました。

これをプロジェクトにマージしたので、「理解できる」(私にとって) エラー メッセージなしでクラッシュします。「範囲外」のものだけが表示されます。この tanCenter プロパティ NSLog-ged をクラッシュせずに取得することさえできません。

助けて、オビ=ワン・ケノービ。あなたは私の唯一の希望です。

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

ios - スプライトを台形に変形する方法は?

スプライトを台形に変換しようとしています。これがないと画像のディテールが失われることがわかっていても、補間についてはあまり気にしません。私が本当にやりたいのは、長方形のスプライトを次のような台形に変換することだけです。


誰かがCGAffineTransformsまたはcocos2dでこれを行ったことがありますか?

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

cocoa - ヒットテストにCALayerのpresentationLayerを使用する必要があるのはなぜですか?

私はCocoaTouchアプリケーションに取り組んでおり、ビューのレイヤーのどのサブレイヤーがタッチされたかを判別することでタッチを処理しようとしていました。私のコントローラーのコードは次のようになりました。

これは機能していませんでした。サブレイヤーの下部をタップすると機能しますが、上部はタップしません。1時間のヘアプルとグーグルの後で、レイヤー自体の代わりにプレゼンテーションレイヤーを使用してヒットテストを実行すると、それが機能することがようやくわかりました。

だから、私は私の問題を解決しました、しかし私の質問は:なぜですか?

Core Animationガイドを読みましたが、プレゼンテーションツリーとレンダリングツリーはオブジェクトモデルツリーとは異なる場合があることを理解しています。しかし、プレゼンテーションツリーが(明らかに)異なるヒットテスト動作をする理由がわかりません。プレゼンテーションツリーとオブジェクトモデルは同じフレームや境界などを持っていませんか?

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

iphone - CALayerの使用法の簡単な例-おそらくUITextFieldで

複数のUITextFieldを含むCocoaTouchデータ入力画面にカスタムキーボードを実装する必要があります。キーボードを作成しましたが、カーソルの点滅を実装する方法を理解する必要があることを除いて、すべてが機能しています。(UITextFieldの組み込みキーボードを無効にすると、カーソルも失われます)。ぐるぐる回って、これを行うためにCALayerアニメーションを使用することについてのいくつかの言及を見てきました。ただし、これを実装する方法の簡単な例はまだ見つかりません。UITextFieldはUIViewを継承しているため、テキストフィールドビューをホストレイヤーとして使用できることを期待していました。まばたきのアニメーション部分は私が心配していることではなく、これを適切に設定しているだけです。アドバイス、または簡単なチュートリアルを含む他のサイトへのポインタはありますか?(私が見つけたものはすべて、マルチレイヤーとゲームに向けられています、

0 投票する
15 に答える
51436 参照

iphone - -[CALayer setNeedsDisplayInRect:]で暗黙のアニメーションを無効にする

-drawInContext:メソッドに複雑な描画コードを含むレイヤーがあります。必要な描画の量を最小限に抑えようとしているので、-setNeedsDisplayInRect:を使用して、変更された部分だけを更新しています。これは見事に機能しています。ただし、グラフィックシステムがレイヤーを更新すると、クロスフェードを使用して古い画像から新しい画像に移行します。すぐに切り替えて欲しいのですが。

CATransactionを使用してアクションをオフにし、期間をゼロに設定しようとしましたが、どちらも機能しません。これが私が使用しているコードです:

代わりに使用する必要があるCATransactionに別のメソッドがありますか(-setValue:forKey:をkCATransactionDisableActionsで試しましたが、同じ結果です)。

0 投票する
14 に答える
66562 参照

iphone - CALayersを使用した丸みを帯びたUIView-一部のコーナーのみ-どのように?

私のアプリケーションでは、次のような名前の4つのボタンがあります。

  • 左上
  • 左下の
  • 右上
  • 右下

ボタンの上には、画像ビュー(またはUIView)があります。

ここで、ユーザーが-上-左ボタンをタップしたとします。上記の画像/ビューは、その特定のコーナーで丸みを帯びている必要があります。

UIViewに丸みを帯びた角を適用するのに問題があります。

現在、次のコードを使用して、丸みを帯びた角を各ビューに適用しています。

上記のコードは、提供されたビューの各コーナーに丸みを適用しています。代わりに、-上/上+左/下+右などの選択したコーナーに丸みを適用したかっただけです。

出来ますか?どのように?

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

iphone - CALayer のマスキング - iPhone

iPhone用のカスタムオン/オフトグルスイッチを作成しています(標準スイッチに似ています)。スライダーのマスクを設定している時点ですが、呼び出すと[[myView layer] setMask:maskLayer]マスクレイヤーの位置が相対的に設定されますマスク レイヤのコンテナ レイヤに関連するものではなく、マスキングしているレイヤ。この特定のシナリオでは、トグル スライダーがマスクの下に移動し、マスクが静止したままになるため、マスク レイヤーの位置をそれを含むレイヤーに対して相対的に設定する必要があります。

マスクとトグル スライダー コンポーネントをアニメーション化して目的の効果を実現する必要がなくても、これを機能させる方法を知っている人はいますか? ここに私がこれまでに持っているものがあります:

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

iphone - UIScrollView と CALayers

完全に CALayers で構成されるカスタム UIView があります。

awakeFromNib メソッドでは、すべての CALayer を作成して適切な位置に設定します (CAGradientLayer、いくつかの CATextLayer、およびいくつかのカスタム CALayer サブクラス)。カスタム UIView は drawRect: メソッドをオーバーライドしません。これは、ビューに直接描画が行われないためです (すべての描画はサブレイヤーで行われます)。

そこで、このビューを取得して UIScrollView に埋め込みました。問題?スクロール バーは表示されず、ビューはスクロールしません。ビューは明らかにスクロール ビューの境界よりも大きく、スクロールを許可する代わりに、スクロール ビューの境界で途切れてしまいます。

ここで何が問題なのですか?

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

iphone - スーパービューがアニメーション化されているときに UILabel のテキストを変更する

スーパービューがUIViewアニメーションによってアニメーション化されているUILabelのテキストを変更することは可能ですか?

containerView のサブビューとして labelView があるとします。timerFired は、containerView がアニメーション化されている間に呼び出されています (前後ではありません)。アニメーション中にlabelViewのsetTextを呼び出していますが、そのテキストは変化しません。私が求めているものを達成する方法はありますか?

編集:私のせい - これはうまくいきます。問題は、テキスト更新ルーチンにありました (キャストの問題)。

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

objective-c - 表示されるCALayerのカスタムアニメーションを置き換える方法

画面に表示されるカスタムアニメーションを変更したいCALayerがあります。メソッドをキャッチできるように、デリゲートを作成しました。

そして、キーがkCAOnOrderInと等しいかどうかを確認しますが、レイヤーにはまだ境界が何であるかが通知されていません(現在、境界について(0、0、0、0)を報告しています)。そこで、キーが「境界」に等しいかどうかを確認しようとしましたが、同じrect(0、0、0、0)が報告されます。

私がやりたいアニメーションは、レイヤーが不透明度を介して画面上で徐々に「フェードアウト」するのではなく、画面の小さな部分から完全な範囲まで成長させたいものです。しかし、それを行うには、それが完全な範囲になることを知る必要があります。カスタムアニメーションを置き換えることができるようにそれを知る方法はありますか、それとも単にこれを間違った方法でアプローチしているだけですか?

ありがとう