如何打印具有多个数据的标题和uitableview的uiwebview
Posted
技术标签:
【中文标题】如何打印具有多个数据的标题和uitableview的uiwebview【英文标题】:How to print uiwebview which has header and uitableview with multiple data 【发布时间】:2019-04-22 19:28:10 【问题描述】:我正在创建 webview 来打印数据。根据我的要求,页面的一半包含标题标签,其余部分以具有表格内容的 uitableview 开头。
如果 tableview 内容更多,那么我需要将这些内容继续到下一页。
func createPDF(_ currentWebView: UIWebView)
let date = Date()
let calendar = Calendar.current
let dateComponents: DateComponents = (calendar as NSCalendar).components([.month, .day, .year], from: date)
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.medium
let dateFormatter1 = DateFormatter()
dateFormatter1.dateFormat = "MM/dd/yy"
let strOrderDate = NSString(format: "Date: " + dateFormatter1.string(from: date) as NSString)
let ID = UserDefaults.standard.value(forKey: "ID") as! String
lblValue.text = ""
lblValue.text = "Value: " + ID
lblTotalItems.text = "Total items: " + (totalNumberofItems as String)
lblDate.text = strOrderDate as String
tblContainer.tableFooterView = UIView()
tblContainer.reloadData()
for eachView: UIView in self.view.subviews
if(eachView.isKind(of: UILabel.self) || eachView.isKind(of: UIView.self) )
if(eachView != self.view && eachView != currentWebView)
currentWebView.addSubview(eachView)
let heightStr: NSString = currentWebView.stringByEvaluatingjavascript(from: "document.body.scrollHeight")! as NSString
let height : Int = heightStr.integerValue
let screenHeight: CGFloat = currentWebView.bounds.size.height;
let pages = Int(ceil(screenHeight/CGFloat(height)))
let frame: CGRect = currentWebView.frame
var currentContext: CGContext = UIGraphicsGetCurrentContext()!
for i: Int in 0..<pages
if (Int(CGFloat(i+1) * screenHeight) > height)
var f: CGRect = currentWebView.frame
f.size.height = f.size.height - CGFloat((CGFloat(i + 1) * screenHeight) - CGFloat(height));
currentWebView.frame = f
UIGraphicsBeginPDFPage();
currentContext = UIGraphicsGetCurrentContext()!
currentWebView.scrollView.setContentOffset(CGPoint(x: 0, y: screenHeight * CGFloat(i)) , animated: false)
currentWebView.layer.render(in: currentContext)
currentWebView.frame = frame
我的问题是:如果 tableview 内容更多且可滚动,我想在第二页中也显示这些内容,但那没有发生。
Tableview 在同一页面上被删减。
任何人对此都有任何想法。请帮忙!
谢谢
【问题讨论】:
UIWebView 在 ios 12 中已弃用。 是的..但是如果内容适合同一个屏幕,它工作正常...唯一的问题是更多的内容来了 您可能无法使用UIWebView
发布新应用。它真的被弃用了。请改用WKWebView
。
用 WKWebView 也试过了..但没有运气..仍然 tableview 整个内容没有显示在下一页。
只是好奇为什么要在 WebView 中添加 UIViews?如果你想使用 webview 为什么不创建 html 表格然后在 webview 中显示它。那会容易得多..
【参考方案1】:
我希望您在查找要生成的页数时遇到了麻烦。请尝试以下代码计算页面。
let heightStr: NSString = currentWebView.stringByEvaluatingJavaScript(from: "document.body.scrollHeight")! as NSString
let height : Int = heightStr.integerValue
let screenHeight: CGFloat = currentWebView.bounds.size.height
// ******** Change is here. *******
let pages = Int(ceil(CGFloat(height)/screenHeight))
希望这会奏效。快乐编码:)
【讨论】:
以上是关于如何打印具有多个数据的标题和uitableview的uiwebview的主要内容,如果未能解决你的问题,请参考以下文章
如何从具有多个单元格原型的 UITableView 中捕获单元格数据?
UITableView 使用 Realm 和 Swift 具有多个按字母顺序排列的部分,多个标签与相同的数据连接
使用 Realm 和 Swift 的具有多个部分的 UITableView