macOS SwiftUI 技巧之图片文件拖拽到app并显示(教程含源码)

实战需求

macOS SwiftUI 技巧之图片文件拖拽到app并显示

本文价值与收获

看完本文后,您将能够作出下面的界面

截屏2021-01-20 上午10.26.21.png
Jietu20210120-102710.gif

看完本文您将掌握的技能

  • guard let itemProvider = info.itemProviders(for: [(kUTTypeFileURL as String)]).first else { return false }
  • URL(dataRepresentation: data, relativeTo: nil)
  • NSImage(contentsOf: url)!
  • Image(nsImage:NSImage(contentsOf: url)!)

基础知识

onDrop(of:delegate:)

使用由您提供的委托控制的行为定义拖放操作的目标。

func onDrop(of supportedContentTypes: [UTType], delegate: DropDelegate) -> some View

返回值

为指定类型的拖动操作提供放置目标的视图。

参量

  • supportedContentTypes
    统一的类型标识符,用于描述该视图可以通过拖放接受的内容类型。如果拖放操作不包含任何受支持的类型,则此放置目标不会激活并且不会更新。isTargeted

  • delegate
    符合协议的类型。使用委托时,您可以全面控制放置行为。DropDelegate

参考

  • func onDrag(() -> NSItemProvider) -> some View
    激活此视图作为拖放操作的源。
  • func onDrop(of: [UTType], isTargeted: Binding?, perform: ([NSItemProvider]) -> Bool) -> some View
    定义拖放操作的目标,该操作使用指定的闭包来处理放置的内容。
  • func onDrop(of: [UTType], isTargeted: Binding?, perform: ([NSItemProvider], CGPoint) -> Bool) -> some View
    定义拖放操作的目标,该操作使用指定的闭包来处理放置的内容。
  • func itemProvider(Optional<() -> NSItemProvider?>) -> some View
    提供一个闭包,该闭包出售要用于特定数据元素的拖动表示形式。

实战代码

你可能感兴趣的:(macOS SwiftUI 技巧之图片文件拖拽到app并显示(教程含源码))