macOS High Sierra和CAShapeLayers,NSImageView,NSTableView配置

时间:2017-09-26 09:57:31

标签: macos cashapelayer nsimageview macos-high-sierra

我已经更新到macOS High Sierra,现在我的项目出现了意想不到的问题,这是macOS Sierra之前没有遇到的问题。 我有自定义NSImageView,在此NSImageView中拖放图像后,我可以使用CAShapeLayersmouseDownmouseDragged函数在图像顶部绘制矩形。然后,我可以计算矩形内部的图像部分的强度。强度数据在数组中,此数组用于NSTableViewNSImageViewNSTableView位于同一NSView。强度计算在@IBAction函数中。更新后,当我按下按钮计算强度时,矩形移动到图像下方(在它们停留在顶部之前)。我发现,这种效果的原因是reloadData()表的功能。当此功能关闭时,矩形停留在图像的顶部。

有人可以解释这些奇怪的事情以及我能做些什么来修复它?按下计算按钮后,我需要将矩形保持在图像的顶部。

更新 我已更新High Sierra,但NSTableView的reloadData()与以前消失CAShapeLayers具有相同的效果。

1 个答案:

答案 0 :(得分:1)

升级到High Sierra之后我遇到了类似的问题,我添加到NSImageView的子视图不再显示了。

要解决此问题,我按照this link的建议将以下行添加到我的代码中(以编程方式添加了NSImageView):

    imageView.wantsLayer = true