Tom*_*yBs 5 ios swift ios-extensions
我目前正在构建一个接受 URL 的共享扩展。作为其中的一部分,我按照上一个问题的概述自定义了我的共享屏幕,以创建一个全屏视图控制器。这一切正常。然而,在默认的共享编辑器视图中,我注意到有一个网页的预览图像。我试图在我的扩展程序中访问它,但我似乎无法掌握它。
具体来说,我一直在尝试使用该方法
loadPreviewImage
https://developer.apple.com/reference/foundation/nsitemprovider/1403925-loadpreviewimage
您会在文档中注意到,对于完成处理程序,这说明了以下内容
completion?Handler 一个完成处理程序块,用于执行结果。此块的第一个参数必须是 NSData、NSURL、UIImage(在 iOS 中)或 NSImage(在 macOS 中)类型的参数,用于接收图像数据。有关实现块的更多信息,请参阅 Completion?Handler。
但是,如果我尝试在完成块中将其设置为 UIImage,则会出现错误
无法将 '(UIImage, _) -> ()' 类型的值转换为预期的参数类型 'NSItemProvider.CompletionHandler!'
通过保护语句确认 itemProvider 是 NSItemProvider 实例的示例代码
itemProvider.loadPreviewImage(options: nil) { (image: UIImage, error) in
}
Run Code Online (Sandbox Code Playgroud)
完成处理程序的文档说将其设置为您想要的类型,它会尝试将数据强制为您指定的类型。有没有人见过这个?我不知道在这里做什么,因为我看不到我做错了什么。
https://developer.apple.com/reference/foundation/nsitemprovider/completionhandler
如果所有其他方法都失败了,我会考虑使用一些 Javascript 从 dom 中获取图像,但我会喜欢 Apple 似乎提供的预览图像
小智 3
我不知道为什么里面的代码
\n\nitemProvider.loadPreviewImage(options: nil) { (image: UIImage, error) in \n }\nRun Code Online (Sandbox Code Playgroud)\n\n点击发布按钮时不会调用。
\n\n我的圆形方法是将预览图像保存在方法中
\n\noverride func configurationItems() -> [Any]! {\n}\nRun Code Online (Sandbox Code Playgroud)\n\n作为
\n\nlet inputItem: NSExtensionItem = self.extensionContext?.inputItems[0] as! NSExtensionItem\n let itemProvider = inputItem.attachments![0] as! NSItemProvider\nif (itemProvider.hasItemConformingToTypeIdentifier("public.url")) {\n itemProvider.loadPreviewImage(options: nil, completionHandler: { (item, error) in // \xe7\x94\xbb\xe5\x83\x8f\xe3\x82\x92\xe5\x8f\x96\xe5\xbe\x97\xe3\x81\x99\xe3\x82\x8b\n if let image = item as? UIImage {\n if let data = UIImagePNGRepresentation(image) {\n self.photoNSURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("preview.png") as NSURL!\n\n do {\n try data.write(to: self.photoNSURL as URL, options: .atomic)\n } catch {\n print("\\(#file)#\\(#function)(\\(#line)): error: \\(error.localizedDescription)")\n }\n }\n }\n })\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |