
Mac 下的 toolBar 當(dāng)拖動(dòng)的時(shí)候也會(huì)拖動(dòng)窗口,這個(gè)時(shí)候如果我們放在 toolBar 上的 View 想拖動(dòng)的時(shí)候就會(huì)產(chǎn)生沖突了,找了下沒找到只是禁止拖動(dòng) toolBar 的操作,找了個(gè)折中的辦法,當(dāng)鼠標(biāo)移動(dòng)到要拖動(dòng)的 View 上的時(shí)候,禁止拖動(dòng)窗口,鼠標(biāo)移開的時(shí)候在恢復(fù)。
```
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
? ? ? ? ? ? ? ? // 下面這個(gè)在這里沒什么用,但是你可以在用到的地方設(shè)置拖動(dòng) View 移動(dòng)窗口。
? ? ? ? ? ? ? ? window.isMovableByWindowBackground = true
? ? ? ? ? ? ? ? self.hover = hover
? ? ? ? ? ? }
? ? }
```
更多內(nèi)容可以查看應(yīng)用?SwiftUI For Beginners,一個(gè)產(chǎn)品設(shè)計(jì)師從自學(xué)的 SwiftUI 開發(fā)的各個(gè)過(guò)程給你講解 SwiftUI 內(nèi)容,Apple 應(yīng)用商店搜索 SwiftUI For Beginners 下載。
- 適合設(shè)計(jì)師人群,互聯(lián)網(wǎng)從業(yè)者或者想自己做個(gè)應(yīng)用的人群;
- 不適合技術(shù)人群,應(yīng)用完全是從一個(gè) 0 基礎(chǔ)的角度去講解各個(gè)階段需要的知識(shí),對(duì)于技術(shù)人群過(guò)于簡(jiǎn)單;
- 內(nèi)容講解? 直接代碼效果預(yù)覽,學(xué)習(xí)過(guò)程更加直觀;
- iPhone, iPad 和 Mac 全平臺(tái)支持,Apple Watch 和 TV 應(yīng)用即將上線。