6

如何将填充添加到 a NSTableCellView

我希望内容具有 10px 的填充,类似于在纯 HTML 中的填充。(所有面)。文本应该垂直居中在中间。

目前我正在 NSTextFieldCell 的子类中执行此操作。但这似乎无法正常工作。

当我编辑文本时,编辑文本字段不使用 textfieldcell 中的填充。

图 2: 检查图像

检查图像

这是我目前拥有的代码,(的子类NSTextFieldCell

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSRect titleRect = [self titleRectForBounds:cellFrame];

NSAttributedString *aTitle = [self attributedStringValue];
if ([aTitle length] > 0) {
    [aTitle drawInRect:titleRect];
}
}

- (NSRect)titleRectForBounds:(NSRect)bounds
{
NSRect titleRect = bounds;

titleRect.origin.x += 10;
titleRect.origin.y = 2;

NSAttributedString *title = [self attributedStringValue];
if (title) {
    titleRect.size = [title size];
} else {
    titleRect.size = NSZeroSize;
}

// We don't want the width of the string going outside the cell's bounds
CGFloat maxX = NSMaxX(bounds);
CGFloat maxWidth = maxX - NSMinX(titleRect);
if (maxWidth < 0) {
    maxWidth = 0;
}

titleRect.size.width = MIN(NSWidth(titleRect), maxWidth);

return titleRect; 
}
4

2 回答 2

6

以下是获取填充的一些选项。

早些时候,我在获得正确的边界框高度时遇到了一些问题NSAttributedString。我不记得我是如何解决它们的,但是关于这个问题有一些讨论

想法1:

使用NSTableView 的单元间间距。它也可以在 Interface Builder 中的 table view 的 size 选项卡中使用。寻找单元格间距。

想法2:

编辑界面时:

  • 除非您需要其他东西,否则请使用 Apple 提供的文本或图像和文本表格单元格视图。
  • 使用大小选项卡更改表格视图内表格单元格视图的高度。
  • 重新定位表格单元格视图内的文本字段。

想法3:

使用自定义单元格。

  • 您可以通过覆盖来更改字段编辑器的位置-[NSTextFieldCell editWithFrame:inView:editor:delegate:event:]。还有-[NSTextFieldCell setUpFieldEditorAttributes]。我发现这个示例代码很有用。
  • 如果增加单元格的高度,有几种方法可以使NSTextFieldCell文本垂直居中。
于 2014-11-28T00:52:13.147 回答
-1

使用 setContentInset 方法。它设置内容视图和封闭表视图之间的插入距离。

例如

self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -20, 0);
于 2014-11-28T16:12:47.950 回答