問題タブ [catextlayer]
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.
ios - CABasicAnimation は、同じ方法で作成されたレイヤーでのみ機能します
条件によっては、さまざまな CATextLayers をアニメーション化する必要があります。これが、レイヤーを受け入れてアニメーション化するメソッドを作成した理由です。ここにあります:
「テキスト」は、他の方法で作成、初期化、およびサブレイヤーに追加された CATextLayer です。問題は、このコードが「テキスト」レイヤーをアニメーション化しないことです。
(メソッドが色を受け取ることに注意しないでください。テストのために赤と黒を一時的に入れています。)
テストを開始しました。このメソッド内にレイヤーを作成してから、この新しく作成したメソッドをアニメーション化しようとすると、問題なく動作します。すべてのレイヤーが作成されるメソッドにコードをコピーして貼り付け、そのうちの 1 つをアニメーション化しようとすると、問題なく動作します。
しかし、さまざまな瞬間にさまざまなレイヤーをアニメーション化する必要があるため、この機能は不可欠だと考えています。
私が間違っていることを説明してください。前もって感謝します。
更新: レイヤーを作成して UIView に配置する方法は次のとおりです。
このようなコードを、アニメーションを行うのと同じメソッドに配置すると、機能します。そして、次のようにメソッドでレイヤーを渡すと、機能しなくなります。
ios - フォントサイズのアニメーション
簡単な質問: 私は を持っていCATextLayer
ます。でつまんだときに大きくしたいCAAnimation
(任意のタイプ、好みCABasicAnimation
)。これどうやってするの?
注: 単純なCABasicAnimation
withtransform.scale
をキーとして使用することはできません。yes の場合、サイズが変更されるためです。しかし、テキストはひどくなります(まったくシャープではありません)。スケーリング中にテキストをレンダリングできる場合にのみ使用できます。これが可能であれば、助けてください。ありがとう!
ios - スーパーレイヤーをスケーリングするときに CATextLayers をスケーリングしない方法
私の問題は次のとおりです。
というCAShapeLayer
名前がありoutCircle
ます。CATextLayers
のサブレイヤーとしていくつか追加しoutCircle
ます。問題は、ピンチoutCircle
してスケーリングすると、サブレイヤーCATextLayers
もサイズ変更され (おそらく明らか)、ぼやけて鮮明ではなくなることです。テキストはひどいように見えます!
したがって、テキストレイヤーの元のサイズと(おそらく)位置を維持しながら、サブレイヤーを維持したいと考えていますoutCircle
。
- 出来ますか?
- どうすればいいですか?
1 つの解決策は、CATextLayers
サブレイヤーを作成しないことですoutCircle
が、さまざまな理由で作成する必要があります。アドバイスありがとうございます!
ios - 既存の NSAttributedString の色を変更する
CATextLayer でレンダリングされる既存の NSAttributedString の色を変更するカテゴリを作成しようとしています。これがカテゴリの実装です
CATextLayer は CAShapeLayer のサブクラスです。また、CATextLayer は色を除いて正しい属性でレンダリングされることにも言及する必要があります。
文字列は、色の EXCEPT 属性で表示されます。そして、私はたくさんのエラーを受け取ります:
CGContextSetFillColorWithColor: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。
それが機能しない理由はありますか?
text - CATextLayer - カーニング/文字間隔の設定
CATextLayer でテキストのカーニングを設定するにはどうすればよいですか?
NSAttributed String で可能であることはわかっていますが、ラベルのテキストは非常に頻繁に変更されるため、フレームごとに新しい NSAttributed String オブジェクトを作成したくありません。
ios - NSMutableAttributedString と一緒に CATextLayer を使用する方法
NSMutableAttributedStringと一緒にCATextLayerを使用しようとしています。
CATextLayer の文字列プロパティを NSMutableAttributedString に設定すると、不変の NSAttributedString に自動的に置き換えられます。
文字列プロパティとポインターを設定する前後に、文字列プロパティでクラスを呼び出した結果を確認しました。NSConcreteMutableAttributedStringを CoreTextLayer に渡し、セッターが呼び出された直後に CATextLayer にその文字列プロパティのクラスを要求すると、次の結果が得られます: NSConcreteAttributedString。また、ポインターは前後で異なります(明らかに)。
それを正しくするにはどうすればよいですか?
ios - サブレイヤーとしての casapelayer および catextlayer
私は、特にノードとエッジを持つスクロールビューを含むiosアプリに取り組んでいます。
最初はcalayerを使用し、開始ノードと終了ノードを監視するキー値を使用しました。次のコードを使用して、エッジとエッジ ラベルを描画します。
これは機能し、ノードをドラッグしてエッジをたどることができましたが、メモリの問題によりアプリがクラッシュしました。すると、代わりにcashapelayerを使うべきだと言われました。これもかなりうまく機能しますが、エッジにラベルを追加する際に問題が発生しました。
ラベルは、エッジの中心に合わせて配置および回転する必要があります。
次のコードは、cashapelayer としてエッジを描画する方法を示しています
catextlayer を追加するにはどうすればよいですか? キャサペレイヤーのサブレイヤーとして、またはスクロールビューのサブレイヤーとして?
ノードの変更にオブザーバーを使用して catextlayer を追加しようとしましたが、cashapelayer と同時に更新することはできません。
ご理解いただければ幸いです。そうでない場合は、教えてください。問題を明確にするよう努めます。
ありがとう。
core-graphics - CATextLayer 個々のキャラクターをアニメートする
CATextLayer で個々の文字のフレームと不透明度をアニメーション化するエレガントな方法を見つけようとしています。ただし、アニメーションの完成をスムーズにするために、テキスト内の各文字の位置を決定する方法を見つけることができません。テキストもフォントも動的であるため、カーニングやスペーシングを静的に決定することはできません。
ios - iOS でシースルー テキスト効果を実現するにはどうすればよいでしょうか?
iOS アプリでシースルー テキスト スタイル効果を実現したいと考えています。Photoshop で目的の効果を作成するのは非常に簡単ですが、これをコードで実現する方法がわかりません。
テキストに適用される効果は、テキストの下の背景を表示するだけですが、表示されるように暗く (または明るく) されます。テキストの塗りつぶしはまったくありません。テキストがある場所の背景を強調するだけです。
これは私が取得したいものです:
この効果は、iOS 7.1 以降 (スライド アニメーションが発生する前) の "スライドしてロックを解除" というテキストに似ていますが、もっと多くの画像が透けて見えるようにしたいと思います。
どうすればそのような効果を生み出すことができるでしょうか? iOS 8 以降をサポートするだけで済みます。
これは、Photoshop で効果を作成する方法です (おそらくもっと簡単な方法があります)。
- 画像を開く
- 画像を別のレイヤーに複製します
- ブレンドモードを変更します(オーバーレイを暗くするか、スクリーンを明るくします)
- レイヤーマスクを追加する
- Option/alt でレイヤーマスクをクリックし、塗りつぶしを黒に変更します
- 必要な場所に白いテキストを追加
- レイヤーマスクをAltクリック
黒または白のラベルを作成して不透明度を下げるだけでは簡単ではありません。それを行うと、次のようになります。