我正在尝试将NSTableView的行调整为恰好适合9行。我已经尝试了[menuTableView setRowHeight:floor(menuRect.size.height / 9)];
并且我尝试了[menuTableView setRowHeight:(menuRect.size.height / 9)];
和[menuTableView setRowHeight:ceil(menuRect.size.height / 9)];
但是所有这些都有相同的问题,如果我选择了第0行,那么第9行会被剪切在底部如果我选择第9行,那么第0行将被剪切在顶部。
如何设置NSTableView以显示9个完整行,所以无论什么都没有可见的部分行?
谢谢,
编辑:是menuRect是menuTableView的框架
修改:
下面是我用来定位NSTableView的完整方法,并设置行高度我尝试使用rowHeight
变量删除任何舍入问题。您可以通过附加的屏幕截图看到最后一行未完全显示
- (void) updateGUIPositions
{
NSRect screenRect = [self frame];
NSRect menuRect;
// Set the menu location on screen
NSInteger spacer = screenRect.size.width / 9;
menuRect.size.width = floor(screenRect.size.width - (spacer * 3)) / 2;
menuRect.size.height = ceil(screenRect.size.height - (spacer * 2));
NSInteger rowHeight = menuRect.size.height / 9;
menuRect.size.height = rowHeight * 9;
menuRect.origin.x = menuRect.size.width + (spacer * 2);
menuRect.origin.y = spacer;
[menuScrollView setFrame:menuRect];
// Setup the row height
[menuTableView setRowHeight:rowHeight];
}
答案 0 :(得分:1)
我不确定这是否有效,但听起来像是一个舍入错误(我对UITableView有同样的问题)。尝试将NSTableView的帧的高度增大1px。所以,menuTableView.frame.height = menuTableView.frame.height+1;
EDIT 试试这个......
`float rowHeight = menuRect.size.height / 9.0f;`
答案 1 :(得分:0)
如果您可以修改行的大小,而是以编程方式设置框架的大小,则此related question表明此公式有效:
numRows * (rowHeight + intercellSpacing.height)
使用该公式,滚动条将绘制,但您可以将其关闭。