gpt4 book ai didi

cocoa - 当第一个 NSView 跨过第二个 NSView 时,NSView 会在另一个 NSView 上留下痕迹

转载 作者:行者123 更新时间:2023-12-03 18:06:45 27 4
gpt4 key购买 nike

我有一个 NSView 子类,可以在其 super View 中拖动。我通过在 mouseDragged 事件处理程序中调用 NSView 的 setFrameOrigin 和 setFrameRotation 方法来移动 View 。每次调用时 View 都会移动和旋转。

我有一个 super View 包含这些 View 的多个实例。我遇到的问题是,当一个 View 被拖到另一个 View 上时,它会在它所遮盖的 View 上留下伪影。我录了a short video这在行动中。不幸的是,由于视频压缩,伪像不是很明显。

我强烈怀疑这与同步平移和旋转有关。 Quartz 调试显示,当另一个 View 拖过遮挡(或被遮挡) View 的矩形时,该矩形会更新( video here );不知何故,这个矩形被绘图引擎错误计算,所以应该重绘的 View 部分没有被重绘。

问题是我不知道如何解决这个问题。我找不到任何方法在文档中手动指定更新矩形,我也不确定这就是需要发生的事情。有任何想法吗?谢谢!

最佳答案

您还可以考虑使用 CALayers 而不是 View 。与 View 不同,层旨在与它们的 sibling 堆叠在一起。

对于可能最省力的解决方案,请尝试使 View 受层支持;它可能会也可能不会解决这个问题,但值得一试。

关于cocoa - 当第一个 NSView 跨过第二个 NSView 时,NSView 会在另一个 NSView 上留下痕迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com