【问题标题】:SwiftUI: Drag WINDOW with Left Mouse Button down on the viewSwiftUI:在视图上用鼠标左键向下拖动窗口
【发布时间】:2022-01-13 04:02:49
【问题描述】:

我有一个包含图像的视图。

@SceneBuilder
var body: some Scene {
    WindowGroup {
        ImageView()
    }
}

ImageView 只是一个图像:

struct ImageView: View  {
    var body: some View {
        Image(.logo)
            .resizable()
            .scaledToFill()
    }
}

如何通过鼠标左键点击ImageView来拖动WINDOW?

就像我们通过点击窗口标题/标题/安全区域来拖动窗口一样。

MacOs、SwiftUI 3

Google 确实没有显示任何有用的信息

【问题讨论】:

标签: swift macos swiftui


【解决方案1】:

用法:

Text("drag wnd with me")
    .dragWndWithClick()

返回码:

import Foundation
import SwiftUI

@available(OSX 11.0, *)
extension View {
    func dragWndWithClick() -> some View {
        self.overlay(DragWndView())
    }
}

struct DragWndView: NSViewRepresentable {
    func makeNSView(context: Context) -> NSView {
        return DragWndNSView()
    }
    
    func updateNSView(_ nsView: NSView, context: Context) { }
}

class DragWndNSView: NSView {
    override public func mouseDown(with event: NSEvent) {
        NSApp?.mainWindow?.performDrag(with: event)
    }
}

【讨论】:

  • 您定义了一个名为 App 的类!!!,但是如何?是不可能的。目前尚不清楚您的答案实际上如何可用甚至有效。您可以展示工作示例以使不清楚的部分变得清晰。
  • 目前还不清楚您将如何使用您的课程。
  • 发布了更好的解决方案。删除了所有旧的 cmets
  • 我认为在 SwiftUI 中拖动手势会出现问题,您可能会遇到点击按钮或滑块甚至在视图中拖动形状的问题。
  • 是的,可以。您只需要做 ZStack 并将此修改器仅应用于背景层,并且位于前层的按钮或手势没有问题:)
猜你喜欢
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2020-07-08
相关资源
最近更新 更多