当名称变得如此之大以至于它不适合它包裹的一行时(或者当你将窗口缩小到如此之小以至于它导致名称不适合单行时).
ROW1 ===============
|图片|一些名字|
|图片|闲置|
2行================
|图片|一些名字真的很长的名字| < - 这被包裹起来推动'空闲'离开视图
|图片|闲置|
===================
解决方法
截断而不是包裹
如果您使用的是标准的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并将列的大小调整为最大值(当然,您只希望在值更改时执行此操作).