UIActivityViewController 分享 SVG 文件

4

我试图使用UIActivityViewController分享SVG文件,但只有消息和邮件可用选项。 如果我选择邮件,则没有任何附件。 有什么办法可以解决这个问题吗?


你的SVG文件应该由哪个应用程序打开? - oiledCode
支持SVG文件的其他应用程序 - nyanev
你用了哪个 UTI?也许你应该使用 UIDocumentInteractionController。 - oiledCode
我正在使用 public.svg 图像。使用 UIDocumentInteractionController 可以运行,但我想从我的控制器中实现它。 - nyanev
你能分享一下如何在UIActivityViewController中附加文件吗? - soulshined
我正在将SVG字符串转换为数据 NSData *svgData = [svgString dataUsingEncoding:NSUTF8StringEncoding];UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[svgData] applicationActivities:nil]; - nyanev
1个回答

0

你应该将字符串保存为数据到应用程序的临时或文档文件夹,然后使用URL作为活动项目,操作系统可以很好地处理它:

extension Data {
/// Data into file
///
/// - Parameters:
///   - fileName: the Name of the file you want to write, remember to include extension.
/// - Returns: Returns the URL where the new file is located in
func toFile(fileName: String) -> URL? {
    var filePath: URL = URL(fileURLWithPath: NSTemporaryDirectory())
    filePath.appendPathComponent(fileName)

    do {
        try write(to: filePath)
        return filePath
    } catch {
        print("Error writing the file: \(error.localizedDescription)")
    }
    return nil
}

}

然后你可以这样做:

let textData = Data(yourSVGString.utf8)
let uniqueRandomName = String(UUID().uuidString.suffix(4))
let svgURL = textData.toFile(fileName: "\(uniqueRandomName).svg")
let ac = UIActivityViewController(activityItems: [svgURL], applicationActivities: nil)
self.present(ac, animated: true, completion: nil)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接