Swift 3 - 如何获取特定UITableView行的屏幕截图

时间:2017-04-13 05:59:37

标签: ios swift uitableview

我需要获取特定UITableView行的屏幕截图,并在屏幕截图之前删除/添加内容。

例如:单元格仅包含文本和共享按钮。点击分享按钮,我希望应用生成顶部带有文字和我的应用徽标的图片( 分享按钮)。

这样做的最佳方法是什么?怎么样?

提前致谢。

1 个答案:

答案 0 :(得分:0)

@Nirav已经在评论部分给了你一个提示:
How to take screenshot of portion of UIView?

所以,你现在要在superview中获取单元格的Rect,所以我做了一个示例动作方法:

@IBOutlet var snapImageView: UIImageView!

@IBAction func snapshotrow(_ sender: Any) {
    //get the cell
    if let cell = myTable.cellForRow(at: IndexPath(row: 0, section: 0)) as? MyCustomCellClass {
        //hide button
        cell.shareButton.isHidden = true

        let rectOfCellInTableView = myTable.rectForRow(at: IndexPath(row: 0, section: 0))
        let rectOfCellInSuperview = myTable.convert(rectOfCellInTableView, to: myTable.superview)
        snapImageView.image = self.view.snapshot(of: rectOfCellInSuperview)

        let finalImage = saveImage(rowImage: snapImageView.image)
        //test final image
        snapViewImage.image = finalImage
    }
}

func saveImage(rowImage: UIImage) -> UIImage {
    let bottomImage = rowImage
    let topImage = UIImage(named: "myLogo")!

    let newSize = CGSize.init(width: 41, height: 41) // set this to what you need
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)

    bottomImage.draw(in: CGRect(origin: .zero, size: newSize))
    topImage.draw(in: CGRect(origin: .zero, size: newSize))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage
}

我能够获取表格视图的第0个单元格的快照,并将其分配给snapImageView

现在最后一步是将图像保存到相机胶卷,SO中有很多相关的帖子。

来源:Get Cell position in UITableview

添加徽标和隐藏分享按钮:Saving an image on top of another image in Swift