【发布时间】:2018-05-28 07:49:14
【问题描述】:
我正在为 macOS 应用程序实现一个工具面板,其中一项功能是拖动面板以对其进行重新排序。在我的代码中,拖动面板的 alpha 在拖动开始时设置为 0,并且它的快照是用鼠标拖动的。
问题是在面板视图上将 alpha 设置为 0 不会影响面板标题,它仍然可见并显示在拖动视图上方。此外,在堆栈中重新排序视图后问题消失了 - 下次我拖动面板时标题也会变得不可见。
你可以在这个 gif 上看到我的问题:
此代码用于面板拖动开始:
private func panelDragStarted(_ gr: NSPanGestureRecognizer) {
draggedRealView = gr.view!.superview!
draggedFakeView = createFakeView(for: draggedRealView)
draggedFakeView.frame = NSRect(origin: draggedRealView.frame.origin, size: draggedRealView.frame.size)
stack.addSubview(draggedFakeView)
draggedRealView.alphaValue = 0
}
在最后添加这一行解决了我的问题:
gr.view!.alphaValue = 0,但我不明白为什么我应该手动更改标题 alpha - 它是面板子视图,应该通过将 alpha 设置为零来影响面板。
【问题讨论】:
标签: swift macos cocoa nsview alpha