Я реализую панель инструментов для приложения MacOS, и одной из функций является перетаскивание панелей для изменения их порядка.В моем коде перетаскиваемая панель альфа установлена на 0 при начале перетаскивания, а ее снимок перетаскивается мышью.
Проблема в том, что установка альфа в 0 на виде панели не влияет на заголовок панели, он все еще виден и отображается над перетаскиваемым видом.Кроме того, проблема исчезает после переупорядочения представлений в стеке - заголовок тоже становится невидимым в следующий раз, когда я перетаскиваю панель.
Вы можете увидеть мою проблему на этом gif:
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
, но не очевидно, почему я должен изменить заголовок альфа вручную - это панельподпредставление и должны быть затронуты путем установки нулевой альфа на панели.