- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个NSTextView
(或 iOS 上的 UITextView
),我希望用户能够插入水平分隔符规则,例如 HTML <hr>
标签或这个东西:
Apple 的文档对此非常了解。到目前为止,我有两个想法:
插入 NSTextAttachment
对于每个规则并让布局管理器以某种方式绘制它。
不要使用单个 TextView ,而是使用禁用滚动的多个 TextView ,将它们放入堆栈 View 中,在它们之间添加分隔符 View ,然后将堆栈 View 放入 ScrollView 中。
<这两种方法对我来说似乎都有点错误或不优雅,因为:
从文档来看,文本附件似乎首先是用于附加文件的。水平尺不是文件。
如果我使用多个 TextView ,我可能会失去 NSTextView
固有的一些性能调整。因为无论用户滚动到哪里,所有 TextView 都需要加载并准备好显示。此外,多 TextView 方法会阻止用户选择整个文本,而这是我的应用程序的要求。
还有更好的想法吗?
最佳答案
我记得几年前就尝试过这样做。使用 NSTextAttachment 是对我有用的方法。我添加了书签this conversation迈克·费里斯 (Mike Ferris) 帮助我记住如何做。我没有代码了,但它非常简单。我对 NSTextAttachmentCell
进行了子类化符合NSTextAttachmentCellProtocol
。您覆盖 cellFrame(for textContainer: NSTextContainer, proposedLineFragment lineFrag: NSRect, glyphPosition position: NSPoint, characterIndex charIndex: Int)
它使您可以访问可以提供其宽度的容器,并且它具有行片段,可以为您提供分隔线上方文本的 y 位置(加上您想要的任何填充)。然后只需覆盖 draw(withFrame cellFrame: NSRect, in controlView: NSView?)
方法并绘制分隔线。
对于有效负载 NSData,你可以用它做任何事情。也许你包括线的宽度、填充、颜色等?使用 NSTextAttachment 的好处是它像 <hr>
一样嵌入在文本本身中。标签。
关于cocoa - 如何在 TextView 中实现水平线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155134/
我是一名优秀的程序员,十分优秀!