如何在NSTableView中设置NSTextFieldCell的框架
问题描述:
我面临着在Mac中设置NSTextFieldCell
框架的问题。我的NSTextFieldCell
位于列的(0,0)点。我需要在y位置有4px的差距。以下是现有用户界面的图像。如何在NSTableView中设置NSTextFieldCell的框架
这里是的.xib结构如下:
委托方法下,我想设置的框为下:
- (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];
}
}
答
单元格没有框架。单元是轻量级的对象,它绘制拥有的控制视图告诉他们的位置。表格视图可以使用单个单元格绘制给定列的所有行。它将计算列的一行的帧,用来自该行和列的值配置单元格,并告诉单元在它计算的帧中绘制自己。然后,它会为下一行配置单元格,并告诉单元格在该行的框架中绘制自己。等等
所以,你需要专注于表格视图,而不是单元格来影响单元格绘制的框架,因为它是计算该框架的表格视图。您是否尝试过设置intercellSpacing
以获得非零值height
?
此外,你应该考虑转换到一个基于视图的表格视图,你有更大的控制。
+0
谢谢你。该应用程序已经开发,所以没有重新开发的范围。我会尝试intercellSpacing。其实我需要5px的填充。尝试与NSMutableParagraph但没有运气。 – TechBee
表视图应该是基于视图还是基于单元格? – Willeke
谢谢@Willeke。它基于细胞。 – TechBee
单元格的controlView是表格视图。 – Willeke