問題タブ [nslayoutmanager]

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

objective-c - NSLayoutManager で文字列の外接長方形を取得する

無限に大きな四角形に配置されるときに、それらの境界四角形を計算したい一意の文字列が大量にあります。現在、単一の NSTextStorage/NSLayoutManager を使用し、すべての文字列をループして、四角形を収集します。

問題は、文字列を描画する必要がないことを考慮して、計算を高速化できるかどうかです。長方形の幅と高さにのみ興味があります。

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

cocoa - NSTextViewlineHeight複数の描画の問題

テキストビューで使用されるNSParagraphStyleのlineHeightMultipleを設定すると、テキストを選択するときに描画アーティファクトが発生します。これはテキストエディットで再現可能です。すなわち:

  1. リッチテキストモードでテキストエディットを開く
  2. フォントとしてCourier14を選択します
  3. 行の高さを1.4に設定します
  4. たくさんのテキストを挿入する
  5. 上部までマウスでテキストの一部を選択します
  6. 選択範囲の縮小を開始します(マウスを下に移動します)

一部の行では、選択が完全にクリアされず、1pxの水平アーティファクトが残ります(screnshotを参照)。これは、さまざまなフォント、lineHeightMultiple値としてのフォントサイズでも発生します(すべてではありませんが)。

誰かがこれを経験したことがありますか、またはこれが起こっている理由を知っていますか?

ありがとう、
ルーベン

スクリーンショット

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

objective-c - NSLayoutManagerテキストの改行が長方形の下から始まり上に向かっているようです

最終的に表示されるのは、長方形の下から上に向かっていくテキストです。ビューで描画すると、次のようになります。

テキストを上から下に向かって開始し、テキストをワードラップする必要があります。今は、新しい行の単語の途中から開始します。、、、について読みましたがNSLayoutManager、この問題を解決する方法がわかりません。NSParagraphStyleNSTypeSetter

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

objective-c - -textStorageDidProcessEditing: 内から表示される文字の範囲を取得する方法は?

私の構文強調表示の実装では、NSTextViewusingへの変更を観察し-[<NSTextStorageDelegate> textStorageDidProcessEditing:]ます。

表示可能な文字の範囲を取得したい。上記のコードはbackspace、ヒットするまで機能し、クラッシュします。

表示される文字の範囲を取得して色を付けるにはどうすればよいですか?

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

objective-c - 自動レイアウトでウィンドウのサイズが変更されています

自動レイアウトが有効になっているペン先に、ビューコントローラのビューと、それを追加するためのプレースホルダービューを含むウィンドウがあります。プレースホルダーには、ウィンドウ内のスーパービューやその他のビューに関連する制約があり、ビューコントローラーを使用する前に、ウィンドウに合わせてプレースホルダーのサイズを変更します。後で、ペン先をロードして、そのトップレベルビューをプレースホルダーのサブビューとして追加します。また、手動で制約を作成して、プレースホルダーの端に揃えます。

すべて順調です。アプリ内のいくつかのインスタンスでこのパターンを使用していますが、一部のケースでは、ビューを追加した後、ウィンドウのサイズが変更されます。ビューがウィンドウの現在のサイズに拡大するのではなく、追加されたビューの最小サイズに縮小されます。

これを防ぐために私が見つけた唯一の方法は、ビューを追加してその制約を作成するときに、プレースホルダーとウィンドウの現在の状態の初期サイズを与えるようにビューのフレームも設定することです。場合によっては問題ありませんが、各エッジをプレースホルダーのスーパービューに揃えるだけの、より複雑な制約を定義できるようにしたいと思います。これらの各ケースのフレーム演算をコーディングしたくありません。

誰かが何が起こっているのか知っていますか?ウィンドウがすでにプレースホルダーのサイズを指定している場合(その逆ではありません)、現在のウィンドウサイズを優先させるためにサブビューを追加するときに何をする必要がありますか?

XcodeのIBウィンドウのポップアップメニューを見たことがありますが、これはサブビューとスーパービュー(すべてのペン先で前者に設定)にのみ影響する制約に関するもののようですが、この機能に関連して何が起こっているのでしょうか?それについてはまだ何も見つかりませんでした。

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

objective-c - 複数のNSTextViewからの順次選択

NSTextView私は1つの選択を共有したいたくさんのを持っています。基本的に、これをWebページ上のテキストを選択するように動作させたいと思います。この場合、複数のテキストビューがありますが、ドラッグしてそれらの中からテキストを順番に選択できます。

複数のオブジェクトで1つのオブジェクトを共有し、選択範囲を共有することが可能であると述べているこのドキュメントを見つけました。これは、1つのオブジェクトしか持てないという事実を除いて、私が望むものの半分です。各テキストビューが独自のテキストを持つことができるように、各テキストビューに独自のテキストを持たせたいのですが、それでも1回のドラッグで複数のテキストビューのテキストを選択できるようにしたいのです。これは可能ですか?NSTextContainerNSLayoutManagerNSLayoutManagerNSTextStorageNSTextStorage

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

scroll - NSTextView の位置の保存と復元

NSTextView の現在のテキストと表示領域を保存して復元できるようにしたいと考えています。visibleRect と scrollRectToVisible: を使用すると、一貫性のない結果が得られるようです。私がそうするなら:

ビューが上から85行未満に配置されている場合、ビューはその位置にとどまりますが、下に行くほどビューは離れます。上から 200 行では 277、300 では 408 などになります。

replaceTextStorage がなくても期待どおりに機能しますが、テキストを置き換えて前の場所を見つけることが重要です。テキストを置き換えると、線の四角形の計算が不安定になります。

明らかに、実際のアプリで保存されたオブジェクトから新しい visibleRect と textStorage を取得することを計画していますが、これは最小限のコードの問題を示しています。

何か案は?

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

macos - サブビューの周りに NSTextView でテキストをレイアウトする

私がやろうとしているのは、NSTextView を用意してカスタム NSView サブビューを追加することですが、テキストをサブビューの周りにレイアウトできるようにします。

現在、サブビューをテキストビューに簡単に追加できますが、もちろん、それはテキストビューに入り、テキストはサブビューを認識しないため、サブビューの上/下で実行されます。もちろん、私が望むものではありません。

したがって、少なくとも「ブロック」(HTML 要素がブロック要素であるため、独自の行にある場合など) に独自のビューを追加できるようにしたいと考えています。これは絶対に必要というわけではありませんが、HTML 要素をインラインにする方法と同じように、テキストに沿ってサブビューを表示します。

これを機能させる方法がよくわかりません。テキストビューに追加できることを私が見た唯一の方法は、テキスト添付ファイルを使用することですが、それらは画像/ファイルのみに追いやられ、(私の知る限り)任意の NSView を含まない NSCell にのみ追いやられているようです。

これは可能であるべきだと思いますが、どこから始めればよいでしょうか?

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

cocoa - NSGlyph とメモリ割り当ての使用

改行を頻繁に追跡する方法では、NSTextViewの場合、 NSGlyphがNSLayoutManagerを使用するようにvisibleRectメモリを割り当てています。 getGlyphs:range:

(レイアウトに影響を与えずに)範囲の参照があるので、これがどれだけのメモリであるべきかを知る必要があります

コード (メイン キューで実行):