Swift 3 – 如何获取特定UITableView行的屏幕截图
我需要有一个特定UITableView行的屏幕截图,并在截屏之前删除/添加内容到单元格。
例如:单元格仅包含文本和共享按钮。 在共享按钮单击时,我希望应用程序生成一个图像,顶部是文本和我的应用程序徽标 ( 没有 共享按钮)。
这样做的最佳方法是什么? 如何?
提前致谢。
@Nirav已经在评论部分给了你一个提示:
如何拍摄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中有很多相关的post。
来源: 在UITableview中获取Cell位置
添加徽标和隐藏共享按钮: 在Swift中将图像保存在另一个图像的顶部