SwiftUI:在视图上用鼠标左键向下拖动窗口
Posted
技术标签:
【中文标题】SwiftUI:在视图上用鼠标左键向下拖动窗口【英文标题】:SwiftUI: Drag WINDOW with Left Mouse Button down on the view 【发布时间】: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 确实没有显示任何有用的信息
【问题讨论】:
@SceneBuilder
是新事物还是自定义代码?我没看过。
@swiftPunk 这是原生的东西 swiftwithmajid.com/2020/06/23/what-is-new-in-swiftui,从 swiftUI 2 开始
【参考方案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 并将此修改器仅应用于背景层,并且位于前层的按钮或手势没有问题:)以上是关于SwiftUI:在视图上用鼠标左键向下拖动窗口的主要内容,如果未能解决你的问题,请参考以下文章