【发布时间】:2010-11-21 23:34:40
【问题描述】:
我有一个可以在其父视图中拖动的 NSView 子类。我通过在 mouseDragged 事件处理程序中调用 NSView 的 setFrameOrigin 和 setFrameRotation 方法来移动视图。每次调用都会移动和旋转视图。
我有这些视图的多个实例,它们包含在一个超级视图中。我遇到的问题是,当一个视图被拖到另一个视图上时,它会在它正在遮蔽的视图上留下伪影。我在行动中记录了a short video。不幸的是,由于视频压缩,伪影不是很明显。
我强烈怀疑这与同步平移和旋转有关。 Quartz Debug 显示,当另一个视图被拖过它时,遮挡(或被遮挡)视图的矩形被更新(video here);不知何故,这个矩形被绘图引擎误算了,所以应该重绘的部分视图不是。
关键是我不知道如何解决这个问题。我找不到任何方法来手动指定文档中的更新矩形,我也不确定这就是需要发生的事情。有任何想法吗?谢谢!
【问题讨论】: