SwiftUI 在 Mac 下 toolBar 上的内容可以拖动
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 应用即将上线。