【发布时间】:2017-02-08 21:52:47
【问题描述】:
我喜欢在NSTableView 中实现我自己的列大小调整方案。我得到了这个大部分工作,但与垂直滚动条的动态外观很矛盾。
想象一下,我想要一个有两列的表,其中第一列始终占据 1/3,而另一列则占据剩余 2/3 的可见空间。
我尝试通过在NSTableView 的子类中实现tile 方法来实现这一点,如下所示:
- (void)tile
{
NSClipView *container = (NSClipView*) self.superview;
NSSize spacing = self.intercellSpacing;
CGFloat avail = container.frame.size.width;
CGFloat cw0 = (int) (avail / 3);
CGFloat cw1 = avail - cw0;
self.tableColumns[0].width = cw0 - spacing.width;
self.tableColumns[1].width = cw1 - spacing.width;
[super tile];
}
我相信我必须调用 [super tile] 才能根据需要添加滚动条。
但是,问题在于,当我调整窗口大小(从而也调整 TableView 大小)时,水平滚动条有时是剪辑视图的一部分,有时不是,导致闪烁。
以下是我在调整窗口大小时得到的示例:
好结果:
糟糕的结果(注意有一个水平滚动条):
当我不断调整窗口大小时,表格视图不断添加和删除水平滚动条,从而闪烁。这是我想要避免的。
我想知道原来的tile 函数是如何处理这个问题的。我将如何启用它,这样我就不会闪烁,但滚动条会根据需要出现?
【问题讨论】:
-
覆盖
-[NSTableView ]sizeLastColumnToFit?
标签: nstableview appkit