2

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

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

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

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

ありがとう、
ルーベン

スクリーンショット

4

2 に答える 2

-1

選択したテキスト属性に段落スタイルを追加し、行の高さを丸めることで、独自のコードでこれを修正しました。

ここに画像の説明を入力

于 2016-04-11T09:15:15.203 に答える
-1

高さがデフォルトの行間隔よりも大きい NSTextAttachment でも同様の問題がありました。この行を NSTextViewDelegate に追加することで軽減できました。

func textViewDidChangeSelection(_ notification: Notification) {
    // will fix artifacts after releasing mouse button
    self.textView.needsDisplay = true
}

また、カスタム NSTextView クラスで mouseDragged 中に大きな再描画領域を作成しようとしましたが、残念ながら NSTextView はこれをまったく異なる方法で処理しているため、mouseDragged が呼び出されることはありません。

段落スタイルのトリックはうまくいきませんでした。

于 2021-03-02T21:21:37.230 に答える