objective-c – 如何使用NSAttributedString保持文本不被包装在NSTableView中

objective-c – 如何使用NSAttributedString保持文本不被包装在NSTableView中,第1张

概述我有一个NSTableView,有2列,一列用于图标,另一列用于两行文本.在第二列的文本列中,我有一些较大的文本,用于表示项目的名称.然后我有一个新的行和一些描述项目状态的较小文本. 当名称变得如此之大以至于它不适合它包裹的一行时(或者当你将窗口缩小到如此之小以至于它导致名称不适合单行时). ROW1 =============== |图片|一些名字| |图片|闲置| 2行============ 我有一个NStableVIEw,有2列,一列用于图标,另一列用于两行文本.在第二列的文本列中,我有一些较大的文本,用于表示项目的名称.然后我有一个新的行和一些描述项目状态的较小文本.

当名称变得如此之大以至于它不适合它包裹的一行时(或者当你将窗口缩小到如此之小以至于它导致名称不适合单行时).

ROW1 ===============
|图片|一些名字|
|图片|闲置|
2行================
|图片|一些名字真的很长的名字| < - 这被包裹起来推动'空闲'离开视图
|图片|闲置|
===================

我的问题是,如果名称太大而不适合,我怎么能保持文本不被包装并让NStableVIEw显示水平滚动条?

解决方法 使用NSScrollVIEw实现 Cocoa中的滚动,NSScrollVIEw是一个视图而不是单元格,因此如果您真的想要为表视图单元实现水平滚动,我认为您必须将整个NStableVIEw子类化并在那里实现该功能.我的建议(当然不知道你的情况的具体情况)是你不这样做,因为它是非标准的行为,可能需要相当多的工作.

截断而不是包裹

如果您使用的是标准的NSTextFIEldCell,只需在IB中选择“截断”作为其布局值,而不是“Wraps”.

如果你有一个自定义NSCell,你正在做你自己的绘图(我假设这是这里的情况),你应该创建一个NSParagraphStyle,设置其换行模式,将其添加为NSAttributedString的文本属性中的NSParagraphStyleAttributename键的值字典.

一个例子:

NSMutableParagraphStyle *paragraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease];[paragraphStyle setlineBreakMode:NSlineBreakByTruncatingTail];[attributedStr addAttribute:NSParagraphStyleAttributename value:paragraphStyle range:NSMakeRange(0,[attributedStr length])];

细胞扩张框架

如果您不想在表格视图单元格中包装文本行,则允许用户查看整个文本的标准方法是使用默认情况下启用的单元格扩展框架:

Cell expansion can occur when the mouse hovers over the specifIEd cell and the cell contents are unable to be fully displayed within the cell.

如果它们由于某种原因而无法正常工作并且您正在使用自定义NSCell子类,请确保在您的单元格中实现-drawWithExpansionFrame:inVIEw:和-expansionFrameWithFrame:inVIEw :.还要确保在NStableVIEwDelegate中没有为-tableVIEw返回NO:shouldShowCellExpansionFortableColumn:row :(如果有的话).

调整整个表视图的宽度?

如果你想要做的是调整特定列的宽度(以及整个表视图,可能导致封闭滚动视图的水平滚动条出现),使其单元格包含的文本永远不会被截断或包裹,可以在NStableVIEwDelegate中执行此 *** 作,例如,通过为该列中的每一行的单元格调用-cellSize并将列的大小调整为最大值(当然,您只希望在值更改时执行此 *** 作).

总结

以上是内存溢出为你收集整理的objective-c – 如何使用NSAttributedString保持文本不被包装在NSTableView中全部内容,希望文章能够帮你解决objective-c – 如何使用NSAttributedString保持文本不被包装在NSTableView中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1015122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存