我需要获取特定UITableView行的屏幕截图,并在屏幕截图之前删除/添加内容。
例如:单元格仅包含文本和共享按钮。点击分享按钮,我希望应用生成顶部带有文字和我的应用徽标的图片(不 分享按钮)。
这样做的最佳方法是什么?怎么样?
提前致谢。
答案 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