swift - 当 UI 元素在透明的 NSView 中移动时,它们的轮廓仍然存在
问题描述
我有一个半透明(alpha = 0.4)的 NSView,其中包含其他 NSView。这些子视图在单击和拖动时使用 mouseDown 和 mouseDragged 来更改它们的位置(通过设置新框架)。然而,似乎每当拖动视图时,它们都会留下原始位置的轮廓(见下面的 gif)。我已经能够通过在每个绘制周期更改背景不透明度(然后将其改回)来防止这种情况发生,但是正如预期的那样,这大大减慢了绘图计算。
这是图像(我在这里相当新,所以还不能直接添加图像): motion silhouette gif
任何有关可能发生的事情以及如何补救的见解将不胜感激。
谢谢!
编辑
根据要求,这里有一些相关代码。被移动的 NSView 都是 DraggableViews:
class DraggableView: NSView {
var firstPoint = CGPoint()
override func mouseDown(with event: NSEvent) {
firstPoint = (self.window?.contentView?.convert(event.locationInWindow, to: self))!
}
override func mouseDragged(with event: NSEvent) {
let newPoint = (self.window?.contentView?.convert(event.locationInWindow, to: self))!
let offset = NSPoint(x: newPoint.x - firstPoint.x, y: newPoint.y - firstPoint.y)
let origin = self.frame.origin
let size = self.frame.size
self.frame = NSRect(x: origin.x + offset.x, y: origin.y + offset.y, width: size.width, height: size.height)
}
}
解决方案
推荐阅读
- python - 尝试使用 python 2 枚举/循环遍历字母、数字等
- sql - Postgres 查询运行时间超过 statement_timeout
- bash - kill -9 但使用名称而不是数字
- java - 从 ArrayList 存储和读取
- uiscrollview - 试图让 UITextView 在键盘放在自身之上时移动内容
- python-3.x - tensorflow服务 - 批处理重塑错误
- android - 运行片段的插桩测试用例时出错
- amazon-web-services - AWS:在将数据从 DynamoDB 发送到 Cloudsearch 之前对其进行转换
- python - 在 Python 中开发我的第一个真正的游戏,但我遇到了一些问题
- python-3.x - wx.ToolTip 不显示消息