Objective c NSTableCellView填充

Objective c NSTableCellView填充,objective-c,xcode,cocoa,nstableview,nstablecellview,Objective C,Xcode,Cocoa,Nstableview,Nstablecellview,如何将填充添加到NSTableCellView 我希望内容有一个10px的填充,类似于在普通HTML中的填充。(各方)。正文应垂直居中, 目前,我正在NSTextFieldCell的一个子类中执行此操作。但这似乎并不正确 编辑文本时,“编辑文本”字段不使用textfieldcell中的填充 图2: 这是我目前拥有的代码,(NSTextFieldCell的子类) -(void)drawInteriorWithFrame:(NSRect)cellFrame查看:(NSView*)控制视图{ NS

如何将填充添加到
NSTableCellView

我希望内容有一个10px的填充,类似于在普通HTML中的填充。(各方)。正文应垂直居中,

目前,我正在NSTextFieldCell的一个子类中执行此操作。但这似乎并不正确

编辑文本时,“编辑文本”字段不使用textfieldcell中的填充

图2:

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

-(void)drawInteriorWithFrame:(NSRect)cellFrame查看:(NSView*)控制视图{
NSRect titleRect=[self titleRectForBounds:cellFrame];
NSAttributedString*aTitle=[self attributedStringValue];
如果([aTitle length]>0){
[aTitle drawInRect:titleRect];
}
}
-(NSRect)标题rectforbounds:(NSRect)bounds
{
NSRect titleRect=边界;
titleRect.origin.x+=10;
titleRect.origin.y=2;
NSAttributedString*标题=[self attributedStringValue];
如果(标题){
titleRect.size=[标题大小];
}否则{
titleRect.size=NSZeroSize;
}
//我们不希望字符串的宽度超出单元格的边界
CGFloat maxX=NSMaxX(边界);
CGFloat maxWidth=maxX-NSMinX(titleRect);
如果(最大宽度<0){
最大宽度=0;
}
titleRect.size.width=MIN(NSWidth(titleRect),maxWidth);
返回标题等;
}

下面是一些获取填充的选项

之前,我在为
NSAttributedString
获取正确的边界框高度时遇到了一些问题。我不记得我是怎么解决的,但在这件事上有很多问题

想法#1: 使用。在界面生成器中,也可以从表视图的“大小”选项卡中找到它。查看单元格间距

想法2: 编辑界面时:

  • 除非您需要其他内容,否则请使用Apple提供的文本或图像和文本表格单元格视图
  • 使用“大小”选项卡更改表格视图中表格单元视图的高度
  • 在表格单元视图中重新定位文本字段
想法三: 使用自定义单元格

  • 您可以通过覆盖
    -[NSTextFieldCell editWithFrame:inView:editor:delegate:event://code>来更改字段编辑器的位置。还有
    -[NSTextFieldCell setUpFieldEditorAttributes]
    。我觉得很有用
  • 如果增加单元格的高度,则需要使
    NSTextFieldCell
    垂直居中绘制文本

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

比如说

self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -20, 0);

似乎是IOS版的。这是IOS版的!editWithFrame都不是。。在我的NSTextFieldCell子类中也不调用setupFieldEditorAttributes。你知道为什么吗?(基于视图的NSTable)我尝试了一些东西,并相应地编辑了我的答案。
self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -20, 0);