Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在NSTableView上放置NSButton_Macos_Cocoa_Nstableview - Fatal编程技术网

Macos 如何在NSTableView上放置NSButton

Macos 如何在NSTableView上放置NSButton,macos,cocoa,nstableview,Macos,Cocoa,Nstableview,1) 按钮后面没有桌子 2) 表格加载 3) 滚动后 如果我在NSTableView上放置一个按钮,滚动后会留下工件。有人知道如何解决这个问题吗 我目前的解决方案是将带有表的部分拆分为2。下部是背景中的禁用按钮 我遇到了一个类似的问题,并解决了它,请参见。本质上,OSX将绘制表的内容,并让父级滚动视图移动缓存的内容,避免重画。通过子类化父滚动视图,可以强制刷新挂接reflectScrolledClipView:方法的表。然后,整个表格(包括覆盖图)将在每次滚动时重新绘制。尝试NSScrollVi

1) 按钮后面没有桌子 2) 表格加载 3) 滚动后

如果我在NSTableView上放置一个按钮,滚动后会留下工件。有人知道如何解决这个问题吗

我目前的解决方案是将带有表的部分拆分为2。下部是背景中的禁用按钮


我遇到了一个类似的问题,并解决了它,请参见。本质上,OSX将绘制表的内容,并让父级滚动视图移动缓存的内容,避免重画。通过子类化父滚动视图,可以强制刷新挂接
reflectScrolledClipView:
方法的表。然后,整个表格(包括覆盖图)将在每次滚动时重新绘制。

尝试NSScrollView方法
-(void)添加浮动子视图:(NSView*)轴视图:(nseventgestreaxis)轴

所有表视图通常都应位于滚动视图内

这是因为滚动视图设置为在滚动时复制其内容,并且作为性能优化,仅重新绘制新打开的部分。要关闭该功能,请使用

myTableView.enclosingScrollView.contentView.copiesOnScroll = NO;
尽管这将使滚动使用更多的CPU(您也可以在XIB中执行此操作,请查看“滚动时复制”复选框)

可能更好的方法是切换滚动视图,并将按钮置于图层背面:

myTableView.enclosingScrollView.wantsLayer = YES;
myButtonView.wantsLayer = YES;
(同样,您可以在XIB文件的“层”检查器中进行设置,在该检查器中,您可以单击每个视图旁边的复选框为其指定一个层)现在,滚动视图将仅从其自己的层复制内容(不再包括您的按钮)。此外,现在所有文本视图的合成都将在图形卡中完成。这适用于不透明按钮,但是,如果您将文本放置在其自身图层的透明背景上(例如,如果您有一个带有标题的透明按钮),则会丢失亚像素消除混叠。

可能的重复