如何在 NSTableView 中设置 NSTextFieldCell 的框架
How to set frame of NSTextFieldCell in NSTableView
我在 Mac 中设置 NSTextFieldCell
的框架时遇到问题。我的 NSTextFieldCell
位于列的 (0,0) 点。我需要在 y 位置有 4px 的差距。下面是现有 UI.
的图像
.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];
}
}
单元格没有边框。单元格是轻量级对象,绘制在拥有控制视图告诉它们的地方。 table 视图可以使用单个单元格来绘制给定列的所有行。它将计算列的一行的框架,用该行和列的值配置单元格,并告诉单元格在它计算的框架中绘制自己。然后,它将为下一行配置单元格,并告诉单元格在该行的框架中绘制自己。等等
因此,您需要专注于 table 视图,而不是影响单元格绘制框架的单元格,因为计算该框架的是 table 视图。您是否尝试过将 intercellSpacing
设置为非零值 height
?
此外,您应该考虑转换为基于视图的 table 视图,这样您可以更好地控制。
我在 Mac 中设置 NSTextFieldCell
的框架时遇到问题。我的 NSTextFieldCell
位于列的 (0,0) 点。我需要在 y 位置有 4px 的差距。下面是现有 UI.
.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];
}
}
单元格没有边框。单元格是轻量级对象,绘制在拥有控制视图告诉它们的地方。 table 视图可以使用单个单元格来绘制给定列的所有行。它将计算列的一行的框架,用该行和列的值配置单元格,并告诉单元格在它计算的框架中绘制自己。然后,它将为下一行配置单元格,并告诉单元格在该行的框架中绘制自己。等等
因此,您需要专注于 table 视图,而不是影响单元格绘制框架的单元格,因为计算该框架的是 table 视图。您是否尝试过将 intercellSpacing
设置为非零值 height
?
此外,您应该考虑转换为基于视图的 table 视图,这样您可以更好地控制。