1

CATextLayerのラッピングにテキストを段階的に追加していますUIScrollView。テキストを追加するたびに、textLayer と scrollView に高さを追加し、scrollViewcontentSizeを調整する必要がありcontentOffsetます。

(ユーザーは scrollView を使用して前のテキストを確認できるはずですが、新しいテキストが追加されたら、プログラムで下にスクロールしたいと考えています。)

UIKitsizeWithFont:は文字列全体を 1 行であるかのように扱うため、高さを計算するには、textLayer のラッピングによって生成される行数で返される size.height を掛ける必要があります。

問題は、textLayer を介して文字列にアクセスすると、折り返しを考慮して余分な '\n' または '\r' 文字が含まれないことです。

ラッピング情報を取得する方法はありますか?おそらくスーパークラスから派生したものでしょうCALayerか?そうしないと、自分の改行を計算するのに行き詰まります。

4

2 に答える 2

2

CATextLayerレイアウトに Core Text を内部的に使用していると想定しているため、同じことを行いCTFramesetterSuggestFrameSizeWithConstraints、指定された幅の属性付き文字列の適切な高さを計算するために使用できます。

于 2012-04-06T01:24:57.833 に答える
0

まあ、私は CATextLayer の折り返し動作をやめて、独自の改行を行うことになりました。これは、行ごとに異なるフォントを使用しているため、この場合はとにかく行う必要があったため、サイズにばらつきが生じます。

しかし、CATextLayer がそのラッピング関数が行っていることへのアクセスを許可しない理由がわかりません。文字列プロパティ自体に改行を追加してアクセスできるようにするか、単に「lineCount」読み取り専用アクセサーを提供するかのいずれかです。 .

于 2012-04-05T14:32:04.973 に答える