我需要增加 NSTableView(基于视图的模式)中的字体大小,以便在我的应用程序的某种演示中提供更好的可读性。
更改字体在以下范围内可以正常工作- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
:
NSTableCellView *cellView = [tableView makeViewWithIdentifier:identifier owner:self];
[cellView.textField setFont:self.tableFont];
cellView.textField.stringValue = rowData[row];
[cellView.textField setNeedsDisplay:YES];
我还用 更新了 rowHeight - (CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
,这也有效:
- (CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
if (self.tableFont) {
NSLog(@"Setting row height to %.1f", [self.tableFont pointSize]+8);
return [self.tableFont pointSize] + 8;
}
return [NSFont systemFontSize] + 8;
}
(可能有更优雅的方法来确定正确的高度)
现在,这是我的问题:我确实看到字体正在更改。我还看到 rowHeight 正在更改(当我使用交替行着色时非常明显)。但是单元格中的文本似乎被剪裁到原来的高度(可能是 17 像素),所以对于较大的字体,我只能看到文字的顶部,然后是一些空白,然后又是下一行的上部.
对我来说,它看起来像一些视图剪辑 NSTableViewCell 到它的旧高度......我已经玩过将框架和边界设置为不同的值,但这并没有改变任何东西:
NSRect rect = [cellView.textField frame];
rect.origin.y = 1;
rect.size.height = [self.tableFont pointSize] + 6;
[[cellView.textField cell] setFrame:rect];
[cellView.textField setFrame:rect];
[cellView.textField setBounds:rect];
[cellView.textField setNeedsDisplay:YES];
[cellView setFrame:rect];
[cellView setBounds:rect];
[cellView setNeedsDisplay:YES];
我有点迷路了......我想我错过了一些简单的东西,但我不知道在哪里看......
谢谢,扬