SwiftUI 在 Mac 下 toolBar 上的内容可以拖动

2022-01-07  本文已影响0人  SwiftUI初学者
导航栏上设置可以拖动的元素

Mac 下的 toolBar 当拖动的时候也会拖动窗口,这个时候如果我们放在 toolBar 上的 View 想拖动的时候就会产生冲突了,找了下没找到只是禁止拖动 toolBar 的操作,找了个折中的办法,当鼠标移动到要拖动的 View 上的时候,禁止拖动窗口,鼠标移开的时候在恢复。

```

var body: some View {

        Image(tool.type.icon)

            .resizable()

            .aspectRatio(contentMode: .fit)

            .frame(width: 20, height: 20)

            .padding(.vertical, 4)

            .padding(.horizontal, 10)

            .background(Color("border").opacity(hover ? 0.4 : 0))

            .clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))

            .onDrag { () -> NSItemProvider in

                let item = NSItemProvider(object: tool)

                item.suggestedName = tool.type.icon

                return item

            }

            .padding(.horizontal, 6)

            .onHover { hover in

                let window = NSApplication.shared.windows.first!

                window.isMovable = !hover

                // 下面这个在这里没什么用,但是你可以在用到的地方设置拖动 View 移动窗口。

                window.isMovableByWindowBackground = true

                self.hover = hover

            }

    }

```

更多内容可以查看应用 SwiftUI For Beginners,一个产品设计师从自学的 SwiftUI 开发的各个过程给你讲解 SwiftUI 内容,Apple 应用商店搜索 SwiftUI For Beginners 下载。

- 适合设计师人群,互联网从业者或者想自己做个应用的人群;

- 不适合技术人群,应用完全是从一个 0 基础的角度去讲解各个阶段需要的知识,对于技术人群过于简单;

- 内容讲解➕ 直接代码效果预览,学习过程更加直观;

- iPhone, iPad 和 Mac 全平台支持,Apple Watch 和 TV 应用即将上线。

上一篇下一篇

猜你喜欢

热点阅读