問題タブ [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.

0 投票する
4 に答える
10103 参照

ios4 - iOS のテキストに合わせて CATextLayer のサイズを変更する

これまでの私のすべての調査は、これを正確に行うことは不可能であることを示しているようです。最初に利用できるオプションは次の 2 つだけでした。

a) CATextLayer のレイアウト マネージャーの使用 - 4.0 の時点で iOS では使用できません

b) sizeWithFont:constrainedToSize:lineBreakMode: を使用し、ここで返されたサイズに従って CATextLayer のフレームを調整します。

オプション (b) は最も単純なアプローチであり、うまくいくはずです。結局、UILabels と完全に連携します。しかし、同じフレーム計算を CATextLayer に適用すると、フレームは常に予想または必要より少し大きくなることが判明しました。

結局のところ、(同じフォントとサイズの) CATextLayers と UILabels の行間隔は異なります。その結果、sizeWithFont (行間隔の計算が UILabels の計算と一致する) は、CATextLayers の予想されるサイズを返しません。

これは、CATextLayer に対して UILabel を使用して同じテキストを出力し、結果を比較することでさらに証明されます。最初の行のテキストは完全に重なっています (同じフォントです) が、CATextLayer の行間隔は UILabel よりも少しだけ短くなっています。(申し訳ありませんが、スクリーンショットには機密データが含まれているため、現在スクリーンショットをアップロードできません。現在、クリーンなスクリーンショットを取得するためのサンプル プロジェクトを作成する時間がありません。後世のために後でアップロードします。時間はあります)

これは奇妙な違いですが、そこで使用する NSAttributedString に適切な属性を指定することで CATextLayer の間隔を調整できると思っていましたが、そうではないようです。CFStringAttributes.h を調べると、行間隔に関連する可能性のある単一の属性が見つかりません。

結論:

そのため、レイヤーをテキストに合わせる必要があるシナリオでは、iOS で CATextLayer を使用することはできないようです。私はこれで正しいですか、それとも何か不足していますか?

PS:

  1. CATextLayer と NSAttributedString を使用したかった理由は、表示される文字列が異なるポイントで異なる色で表示されるためです。いつものように手で文字列を描画することに戻る必要があると思います....もちろん、適切な行の高さを取得するために sizeWithFont からの結果をハッキングするオプションが常にあります。

  2. 「コード」タグを少し悪用して、投稿を読みやすくします。

  3. 投稿に「CATextLayer」のタグを付けることができません - 驚くべきことに、現時点ではそのようなタグは存在しません。十分な評判のある誰かがこの投稿に遭遇した場合は、それに応じてタグ付けしてください.

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

ios - CATextLayerで異なる特定の文字をフォーマットしますか?

それは可能ですか?

CATextLAyerを使用していない場合、どうすればよいですか?

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

cocoa - CATextLayerでカスタム段落スタイルの文字列を描画することは可能ですか?

このようなリストを描きたい:

これが私のコードです:

次に、attrStringをCATextLayerのstringプロパティに設定しましたが、paragphスタイルが結果に適用されません。

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

iphone - 切り捨てを伴う複数行のCATextLayer

== YESをラップした場合、CATextLayerに「...」を表示させる方法はありますか?

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

iphone - CATextLayerとトラッキング/文字間の間隔

私はCATextLayerを使用しています。iOSでカスタムフォントを使用するために、カスタムフォントを使用する簡単な方法があることは知ってFonts provided by applicationいますが、これは別のフォントです。各文字の間隔を変更する方法はありますか?私はそうするためのプロパティを見つけられませんでした!

編集済み:

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

objective-c - CATextLayer でテキストを回転させる方法は?

いくつかのテキストを a に表示していますCATextLayerが、大きすぎて定義された四角形に収まりません。すべてが読めるように、テキストをゆっくりと回転させたいと思います。私はそれを行う方法がわかりません。私はこれを行うための比較的簡単な方法があることを望んでいます.

更新:私が説明しようとしているのは、テキスト自体が回転することだと思います。html マーキー タグのようなもので十分です。

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

objective-c - スケーリングされたプレビュー: NSTextView、NSTextField、CATextLayer、または drawInRect を使用しますか?

プロジェクター画面の中央にテキスト (垂直および水平) を表示するココア アプリをプログラミングしています。

コンピューターの画面のココア ウィンドウの「壁」に表示される内容の小さなプレビューを表示したいと思います (a NSCollectionView)。現在のスライドと次のスライドがプレビューとして表示される、Powerpoint の「発表者モード」と同じように。

提示されたテキストを実装するためにどの方法をお勧めしますか?

NSTextFieldテキストの位置合わせとスケーリングが難しいことが判明しました。CATextLayer一方、スケーリングは魅力のように機能しますが、このような単純なタスクには少しやり過ぎに感じます。NSTextViewまたはdrawInRect良いトレードオフを使用しますか?

これに何時間も何日も費やす前に、何かを見逃していないことを確認してくれたことに感謝します:) 私の目標は、堅牢でシンプルな状態を保つことです。ありがとう!

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

ios - iOS-CATextLayerのアニメーションを無効にするか編集します

CATextLayer変数を使用していますが、フォントを増やしたり、この文字列に何かを入力しようとすると、これらのアクションでアニメーション効果があります。CATextLayerのアニメーションを編集または無効にするにはどうすればよいですか?

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

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

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

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

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

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

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

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

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

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

_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);

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

ios - UISliderアクションに基づいてCATextLayerをアニメーション化する

このアニメーションを実行するのに問題があります。おそらくいくつか問題があるように感じますが、正しい方向を見つけるのに苦労しています。ユーザーがUISliderコントロールをドラッグしているときに、CATextLayerをパルス(スケールアップおよびスケールダウン)したいと思います。

IBActionメソッドの中には、次のコードがあります。メソッドが実際に呼び出されていることを確認しました。

メソッドが非常に高速に繰り返し呼び出されることに気づきました。これがアニメーションの実行を妨げているのか、アニメーションブロック自体に問題があるのか​​わかりません。