微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过UIActivityView共享时如何为屏幕快照文件提供文件名

如何解决通过UIActivityView共享时如何为屏幕快照文件提供文件名

我创建了一个带有打印的VC,并共享了一堆计算的友好版本。当我按“分享”时,会出现一个小图标和所有很棒的分享选项。我不知道如何在小图标旁边添加某种文件名。我认为,如果我能做到这一点,它将看起来更加专业。

希望有一个简单的解决方案,有人可以帮助:)

enter image description here

这是我的代码

import UIKit

class EvenPrintableViewController: UIViewController {

@IBOutlet weak var widthSizeTransfer: UILabel!
@IBOutlet weak var heightSizeTransfer: UILabel!
@IBOutlet weak var lengthTransfer: UILabel!
@IBOutlet weak var calcOutput: UILabel!

// Instantiate variables for Even transfer
var largeSizeRelay: String?
var lengthSizeRelay: String?
var heightRelay: String?
var calcOutputRelay: String?

override func viewDidLoad() {
    super.viewDidLoad()
    
    // Sets share icon to share/print view
    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action,target: self,action: #selector(shareTapped))
    
    // Assign labels to Metric Even VC values via instances above
    widthSizeTransfer.text = witdhSizeRelay
    heightSizeTransfer.text = heightSizeRelay
    heightTransfer.text = heightRelay
    calcOutput.text = calcOutputRelay

}

// Share function for share button
@objc func shareTapped() {
    
    let renderer = UIGraphicsImageRenderer(size: view.bounds.size)
    let image = renderer.image { ctx in
        view.drawHierarchy(in: view.bounds,afterScreenUpdates: true)
    }

    let vc = UIActivityViewController(activityItems: [image],applicationActivities: [])
    vc.excludedActivityTypes = [.assignToContact,.addToReadingList]
    vc.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem
    present(vc,animated: true)
}
}

解决方法

首先将UIImage保存为临时png / jpg文件:

guard let imageData = image.pngData() else { return }

然后将其保存为临时文件,以便您选择文件名:

let tempDir = FileManager.default.temporaryDirectory
let imgFileName = "YOUR_IMG_FILE_NAME.png"
let tempImgDir = tempDir.appendingPathComponent(imgFileName)
try? imageData.write(to: tempImgDir)

然后您可以共享URL:

// Your code
let vc = UIActivityViewController(activityItems: [tempImgDir],applicationActivities: [])

P.S。该文件只是临时的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。