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

实战代码

还有 40% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥9.90 继续阅读

相关阅读更多精彩内容

友情链接更多精彩内容