首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在通过UIActivityView共享时给屏幕截图文件取一个文件名

如何在通过UIActivityView共享时给屏幕截图文件取一个文件名
EN

Stack Overflow用户
提问于 2020-08-29 23:14:35
回答 1查看 480关注 0票数 4

我已经创建了一个VC与打印和共享的一堆计算的友好版本。当我按下“分享”键时,会出现一个小图标和所有的股票期权,这是很棒的。我不知道如何在小图标旁边添加某种文件名。我认为如果我能做到这一点,这看起来会更专业些。

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

这是我的代码:

代码语言:javascript
复制
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)
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-30 01:41:13

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

代码语言:javascript
复制
guard let imageData = image.pngData() else { return }

然后将其保存为一个临时文件,它允许您选择一个文件名:

代码语言:javascript
复制
let tempDir = FileManager.default.temporaryDirectory
let imgFileName = "YOUR_IMG_FILE_NAME.png"
let tempImgDir = tempDir.appendingPathComponent(imgFileName)
try? imageData.write(to: tempImgDir)

然后您就可以共享URL了:

代码语言:javascript
复制
// Your code
let vc = UIActivityViewController(activityItems: [tempImgDir], applicationActivities: [])

这个文件只是暂时的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63652623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档