【问题标题】:NSTextView lineHeightMultiple drawing issuesNSTextView lineHeight多次绘制问题
【发布时间】:2011-06-03 21:20:14
【问题描述】:

通过设置在文本视图中使用的 NSParagraphStyle 的 lineHeightMultiple,我在选择文本时会得到绘图工件。这在 TextEdit 中是可重现的。更具体地说:

  1. 以富文本模式打开 TextEdit
  2. 选择 Courier 14 作为字体
  3. 将行高倍数设置为 1.4
  4. 插入一堆文字
  5. 用鼠标选择文本的一部分直到顶部
  6. 开始减少选择(向下移动鼠标)

在某些行中,选择没有完全清除,留下一个 1px 的水平伪影(见截图)。不同的字体也会出现这种情况,字体大小为 lineHeightMultiple 值(尽管不是全部)。

有没有人经历过或者知道为什么会这样?

谢谢,
鲁本

【问题讨论】:

  • 使用 ceilf() 或 floorf() 怎么样

标签: cocoa nstextview textedit nslayoutmanager


【解决方案1】:

我在自己的代码中通过将段落样式添加到选定的文本属性并舍入行高来解决此问题。

【讨论】:

    【解决方案2】:

    NSTextAttachment 的高度大于默认行距时,我遇到了类似的问题。我可以通过将此行添加到我的 NSTextViewDelegate 来缓解它。

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

    我还尝试在自定义 NSTextView 类中的 mouseDragged 期间创建更大的重绘区域,但不幸的是 NSTextView 处理这个完全不同,因此永远不会调用 mouseDragged。

    段落样式的技巧对我不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多