如何向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;
}
答案 0 :(得分:4)
以下是获取填充的一些选项。
早些时候我在NSAttributedString
获取正确的边界框高度时遇到了一些问题。我不记得我是如何解决它们的,但有some discussions就此问题。
使用NSTableView's intercell spacing。它也可以从表视图的大小选项卡中在Interface Builder中使用。寻找细胞间距。
编辑界面时:
使用自定义单元格。
-[NSTextFieldCell editWithFrame:inView:editor:delegate:event:]
来更改字段编辑器位置。还有-[NSTextFieldCell setUpFieldEditorAttributes]
。我发现NSTextFieldCell
垂直居中绘制文本。答案 1 :(得分:-1)
使用setContentInset方法。它设置内容视图和封闭表视图之间的插入距离。
例如
self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -20, 0);