問題タブ [nstextcontainer]

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

ios - NSLayoutManager でレイアウトを確保する

たくさんのテキストを含む UITextView があります。スクロールは、iPhone 4、5、および 6 ではほぼスムーズですが、6 Plus では多くのカクつきがあります。(これは、押し出さなければならないピクセルの量に対して 6 Plus のパワーが不足しているためだと思います)。ある領域をスクロールすると、その領域をスクロールして戻ると、スクロールがスムーズに行われることに気付きました。領域のレイアウトは既に実行されており、プロセッサは多くのことを行う必要はありません。リージョンに到達する前にレイアウトを強制したい。これは私が試したものです:

これはまったく何もしていないようです。領域の最初のパスではまだスクロールがスムーズではなく、前後のログ ステートメントには 0.00014 秒の差があります。本当に正しいテキスト コンテナーを取得していることを確認するために、次のことも試しました。

これも違いはありませんでした。

テキスト コンテナ内のすべてのテキストを強制的にレイアウトするにはどうすればよいですか?

どんな助けでも大歓迎です。

ありがとう。

追加するために編集: TheCodingArt の質問に答えるには: レイアウト マネージャーの点でエキゾチックなことは何もしていません。これは私のセットアップコードです:

テキストコンテナーとテキスト ストレージを明示的にインスタンス化して追加することは、この質問に対する最初の回答から学んだことです 。

後で、テキストを追加します。

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

ios - カスタム UIBezierPath を NSTextContainer に合わせる方法

私はこのリンクのメソッドを使用しています: UILabel の円にテキストを合わせる方法

元の方法を使用すると、[UIBezierPath bezierPathWithOvalInRect:r];うまく機能します。しかし、独自の UIBezierPath を描画して置き換えると、機能しません。while ループは永遠に続きます。以下は、(A) カスタム UIBezierPath 描画と (B) デフォルトの UIBezierPath 楕円形のスクリーンショットです: http://i.imgur.com/n74BHjX.png

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

ios - NSTextContainer の除外パスはテキストとともに移動します

exclusionPathsカスタムビューを 内に実装しUITextView、ページアプリのようにテキスト編集中にテキストで移動しようとしています。
カスタムビューが必要な場所に のカスタム属性を追加しようとしており、 の後にカスタム属性を使用してattributedText更新しています。 ユーザーが改行を入力すると問題が発生します。ユーザーが画像の前に改行文字を押すと、カスタム属性が下にあり、原点が間違った場所にあるため、使用しています。exclusionPathsboundingRectForGlyphRangetextViewDidChange
exclusionPathsexclusionPathyboundingRectForGlyphRange

何か案は?

正しい位置

間違った位置

編集: 問題は、UITextViewストーリーボード/xib からの読み込み中の Apple のバグでした。iOS 7 の UITextView の改行がテキスト キットの除外ゾーンのラッピングを壊すのに役立ちました。置換テキストが "\n" の場合、shouldChangeTextInRange の除外パスを調整しています。

0 投票する
3 に答える
3802 参照

ios - タップから UILabel の文字のインデックスを取得する

UILabel でタップされた文字のインデックスを取得したいと思います。UILabel をサブクラス化しました。私のawakeFromNib()にはこれがあります:

最初の文字をタップし、touchesEnded で 0 のインデックスを取得するように、ラベルの最初の 5 文字に対して希望どおりに機能しています。

var touchedCharacterIndex = layoutManager.characterIndexForPoint(touch.locationInView(self), inTextContainer: textContainer, fractionOfDistanceBetweenInsertionPoints: nil)

しかし、UILabel の最初の 4 文字を超えてどこかをタップすると、4 または 0 が返されますが、これは正しくありません。

ありがとう、

アップデート

コメントの提案から、私はこれを追加しました:

、 、layoutSubviews()、、awakFromNibのセッターでこれを呼び出します。boundsframeattributedTexttext

そして、テキストの長さが21の場合、最初の文字をタップすると6になるなど、奇妙なインデックスが表示されます.

0 投票する
0 に答える
283 参照

ios - NSTextAttachment を使用するのではなく、exclusivePaths を設定した後に新しい行に文字列を追加する方法は?

UITextView以下のスクリーンショットのように、新しい行に文字列を追加するにはどうすればよいですか? 私を助けてくれてありがとう。

これが私のコードです。

メインコード:

ここに画像の説明を入力

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

ios - UITextViewの境界を変更している間、TextContainerはサイズ変更されません

textView のサイズを変更した後、textContainer を textView と同じサイズにしたい (テキストをサイズ変更した textView と同じ幅にしたい)。したがって、私が現在行っていることは、UITextViewプログラムで作成し、(textView 内のテキストの有無にかかわらず) 境界を変更して textView のサイズを変更しますが、textContainer は同じサイズのままです (テキストは textView よりも小さい四角形にあり、見栄えが悪い)。

ここにいくつかのコードがあります:

以降:

現在、なぜ機能しないのか、解決策が見つからないのか、私には考えがありません。