美文网首页iOS Developer
tableView 屏幕截图并使用AirPrint打印

tableView 屏幕截图并使用AirPrint打印

作者: 简简单单写书 | 来源:发表于2017-07-21 16:07 被阅读113次

    项目中要求tableView的截图,转为Data,并用AirPrint 打印出来,特地总结一下

    tableView截图

    <pre>
    func imageFromTableView(tableView: UITableView) -> UIImage {

        var image = UIImage()
        //开上下文
        UIGraphicsBeginImageContextWithOptions(tableView.contentSize, tableView.isOpaque, 0.0)
        //保存frame
        let savedContentOffset = tableView.contentOffset
        let savedFarme = tableView.frame
        //设置tableView在画布的位置和大小
        tableView.contentOffset = .zero
        tableView.frame = CGRect(x: 0, y: 0, width: tableView.contentSize.width, height: tableView.contentSize.height)
        // 开始画
        tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
        //生成图片保存在image中
        image = UIGraphicsGetImageFromCurrentImageContext()!
        //还原tableView的frame
        tableView.contentOffset = savedContentOffset
        tableView.frame = savedFarme
        //关闭上下文
        UIGraphicsEndImageContext()
        
        return image
    }
    

    </pre>

    image使用AirPrint打印

    <pre>
    let pic = UIPrintInteractionController.shared // 创建控制器
    let printInfo = UIPrintInfo.printInfo() // 打印机配置

    // UIPrintInfoOutputType:给 UIKit 提供要打印内容的类型提示。可以是以下任意一个:
    // .General(默认):文本和图形混合类型;允许双面打印。
    // .Grayscale:如果你的内容只包括黑色文本,那么该类型比 .General 更好。
    // .Photo:彩色或黑白图像;禁用双面打印,更适用于图像媒体的纸张类型。
    // .PhotoGrayscale:对于仅灰度的图像,根据打印机的不同,该类型可能比 .Photo 更好。
    printInfo.outputType = .general
    pic.printInfo = printInfo
    pic.showsNumberOfCopies = false //让用户选择打印范围,只在多页的时候有用
    pic.printingItem = image // 输入源
    //ipad 的调用方式
    pic.present(from: rect, in: inView, animated: true, completionHandler: { (pick, isSuccess, error) in

            })
    

    // iphone 的调用方式
    // pic.present(animated: true, completionHandler: { (pick, isSuccess, error) in })
    </pre>

    此时就会弹出打印页面,但是系统自带的显示的是英文此时需要修改info.plist中的文件,将en改为China

    修改语言

    相关文章

      网友评论

        本文标题:tableView 屏幕截图并使用AirPrint打印

        本文链接:https://www.haomeiwen.com/subject/nsfjkxtx.html