如何在NSTableView中设置NSTextFieldCell的框架

问题描述:

我面临着在Mac中设置NSTextFieldCell框架的问题。我的NSTextFieldCell位于列的(0,0)点。我需要在y位置有4px的差距。以下是现有用户界面的图像。如何在NSTableView中设置NSTextFieldCell的框架

Existing Column

这里是的.xib结构如下:

enter image description here

委托方法下,我想设置的框为下:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)aRow 
{ 
    if ([[aTableColumn identifier] isEqualToString:@"notes"]) 
    { 
     [aCell setBackgroundColor:[NSColor redColor]]; 

     NSTextFieldCell *theCellView = aCell; 
     NSView *controlView = [theCellView controlView]; 
     NSRect frame = controlView.frame; 
     frame.origin.x = 120; 
     frame.origin.y = 130; 
     [controlView setFrame:frame];  
    } 
} 
+0

表视图应该是基于视图还是基于单元格? – Willeke

+0

谢谢@Willeke。它基于细胞。 – TechBee

+0

单元格的controlView是表格视图。 – Willeke

单元格没有框架。单元是轻量级的对象,它绘制拥有的控制视图告诉他们的位置。表格视图可以使用单个单元格绘制给定列的所有行。它将计算列的一行的帧,用来自该行和列的值配置单元格,并告诉单元在它计算的帧中绘制自己。然后,它会为下一行配置单元格,并告诉单元格在该行的框架中绘制自己。等等

所以,你需要专注于表格视图,而不是单元格来影响单元格绘制的框架,因为它是计算该框架的表格视图。您是否尝试过设置intercellSpacing以获得非零值height

此外,你应该考虑转换到一个基于视图的表格视图,你有更大的控制。

+0

谢谢你。该应用程序已经开发,所以没有重新开发的范围。我会尝试intercellSpacing。其实我需要5px的填充。尝试与NSMutableParagraph但没有运气。 – TechBee