首页 > 解决方案 > 如何将 UIView 保存到相机胶卷而不显示视图

问题描述

我想实现简单的分享功能。在我的应用程序中,如果用户长按UITableViewCell,它会出现UIActionController一些按钮。第一个允许与朋友分享内容 ( UIActivityViewController)

我的目标是在右上角保存带有品牌水印的单元格文本。

现在,我正在使用此扩展程序转换UIViewUImage

extension UIView {
    func convertToImage() -> UIImage {
        if #available(iOS 10.0, *) {
            let renderer = UIGraphicsImageRenderer(bounds: bounds)
            return renderer.image { rendererContext in
                layer.render(in: rendererContext.cgContext)
            }
        } else {
            UIGraphicsBeginImageContext(self.frame.size)
            self.layer.render(in: UIGraphicsGetCurrentContext()!)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return UIImage(cgImage: image!.cgImage!)
        }
    }
}

但我有一些问题。它仅在屏幕上显示视图时有效。如果我尝试获取UIView屏幕上未显示的图像,则会得到一个空变量。

即使使用vc:

let vc = ViewController()
let image = vc.view.convertToImage()
//Image empty

我不希望该用户在屏幕上看到带有水印的内容,我只需要将水印添加到相机胶卷中。

我可以做吗?

标签: iosswiftuitableviewuiimage

解决方案


推荐阅读