我有一个可以在其父视图中拖动的 NSView 子类。我通过在 mouseDragged 事件处理程序中调用 NSView 的 setFrameOrigin 和 setFrameRotation 方法来移动视图。每次调用都会移动和旋转视图。
我有一个超级视图包含的这些视图的多个实例。我遇到的问题是,当一个视图被拖到另一个视图上时,它会在它正在遮蔽的视图上留下伪影。我录制了一个简短的视频。不幸的是,由于视频压缩,伪影不是很明显。
我强烈怀疑这与同声翻译和旋转有关。Quartz Debug 显示,当另一个视图被拖过时,遮挡(或被遮挡)视图的矩形会更新(此处为视频);不知何故,这个矩形被绘图引擎误算了,所以应该重绘的部分视图不是。
踢球者是我不知道如何解决这个问题。我找不到任何方法来手动指定文档中的更新矩形,我也不确定这就是需要发生的事情。有任何想法吗?谢谢!