我正在为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到面板来影响。
答案 0 :(得分:0)
第一次拖动尝试与其他人之间的区别是在堆栈子视图重新排序时将 stack.wantsLayer 属性设置为true。所以我只是将stack.wantsLayer = true
移到初始化时间,现在它工作正常。