【发布时间】:2017-04-15 20:50:02
【问题描述】:
在我的 Swift 应用程序中,我有一个 UITableView,其中包含 4 个静态单元格,然后它具有不同数量的动态单元格。我只想截取静态单元格的屏幕截图。
我找到了以下扩展:
extension UITableView {
var capturedImage : UIImage {
UIGraphicsBeginImageContext(contentSize);
scrollToRow(at: NSIndexPath(row: 0, section: 0) as IndexPath, at: UITableViewScrollPosition.top, animated: false)
layer.render(in: UIGraphicsGetCurrentContext()!)
let row = numberOfRows(inSection: 0)
let numberofRowthatShowinscreen = 4
let scrollCount = row / numberofRowthatShowinscreen
for i in 0 ..< scrollCount {
scrollToRow(at: NSIndexPath(row: (i+1)*numberofRowthatShowinscreen, section: 0) as IndexPath, at: UITableViewScrollPosition.top, animated: false)
layer.render(in: UIGraphicsGetCurrentContext()!)
}
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext();
return image;
}
}
来自这个问题How to render a whole UITableView as an UIImage in iOS?
但问题是,即使我改变了:
let numberofRowthatShowinscreen = 4
到:
let numberofRowthatShowinscreen = 3
那么它仍然会截取整个UITableView。那么有没有办法将其限制在前 4 行?
【问题讨论】:
-
你为什么不简单地控制你的表视图数据源数组在调用 captureImage 之前返回
yourDataSource.prefix(4)
标签: ios swift uitableview swift3 uiimage