【发布时间】:2018-03-07 11:47:33
【问题描述】:
我已更新到 macOS High Sierra,但现在我的项目中出现了意想不到的问题,这些问题以前在 macOS Sierra 中没有出现过。
我有自定义 NSImageView 并且在此NSImageView 中拖放图像后,我可以使用CAShapeLayers 和mouseDown、mouseDragged 函数在图像顶部绘制矩形。然后,我可以计算矩形内图像部分的强度。强度数据在数组中,该数组用于NSTableView。 NSImageView 和 NSTableView 在同一个 NSView 中。强度计算在@IBAction 函数中。更新后,当我按下计算强度的按钮时,矩形移动到图像下方(在它们停留在顶部之前)。我发现,造成这种效果的原因是表的reloadData() 函数。当此功能关闭时,矩形将停留在图像的顶部。
有人能解释一下这个奇怪的事情吗?我能做些什么来解决它?按下计算按钮后,我需要将矩形保留在图像顶部。
更新
我已经更新了 High Sierra,但 NSTableView 的 reloadData() 与以前一样对 CAShapeLayers 的消失具有相同的效果。
【问题讨论】:
-
我不确定我对相关问题的回答是否会对您有所帮助:stackoverflow.com/a/46452867/2148757
-
我有一个相关的问题,我也在使用 nstableview 并且我的所有单元格在 highsierra 更新后在 reloadData() 上变得不可见...
-
@user2403221 我发现(根据一个人的建议设置 Z 轴的值)当我为矩形(CAShapeLayers)显式设置 Z 轴的值时,而不是依赖于默认值(就像在 Sierra 中一样),然后 CAShapeLayers 保持在顶部。我猜在 reloadData() 图层沿 Z 轴以不同顺序重绘之后,在 Sierra 和 High Sierra 中。
标签: macos cashapelayer nsimageview macos-high-sierra