无法快照UITableViewController,但可以快照UIViewController

问题描述

我正在尝试为UITableViewController

做快照

我有一个简单的测试班

class FeedSnapshotTests: XCTestCase {
    
    // Fails
    func test_empty_feed_one() {
        let sut = UITableViewController(style: .grouped)
        sut.loadViewIfNeeded()
        record(snapshot: sut.snapshot(),named: "EMPTY_FEED_ONE")
    }
    
    // Passes
    func test_empty_feed_two() {
        let sut = UIViewController()
        sut.loadViewIfNeeded()
        record(snapshot: sut.snapshot(),named: "EMPTY_FEED_TWO")
    }
}

private extension FeedSnapshotTests {
    func record(snapshot: UIImage,named name: String,file: StaticString = #filePath,line: UInt = #line) {
        guard let imageData = snapshot.pngData() else {
            return XCTFail("Failed to generate PNG data representation from snapshot",file: file,line: line)
        }
        
        let snapshotURL = URL(fileURLWithPath: String(describing: file))
            .deletingLastPathComponent()
            .appendingPathComponent("snapshots")
            .appendingPathComponent("\(name).png")
        
        do {
            try FileManager.default.createDirectory(at: snapshotURL.deletingLastPathComponent(),withIntermediateDirectories: true)
            try imageData.write(to: snapshotURL)
        } catch {
            XCTFail("Failed to record snapshot with error: \(error)",line: line)
        }
    }
}

extension UIViewController {
    func snapshot() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: view.bounds)
        return renderer.image(actions: { action in
            view.layer.render(in: action.cgContext )
        })
    }
}

目前,我只是尝试创建一个UIImage并保存到磁盘。

但是由于某种原因,在UITableViewController的情况下,我无法快照视图。如果我切换到UIViewController,则可以使用。

尝试创建UImage中的UITableViewController时,我的测试总是在这里失败

      guard let imageData = snapshot.pngData() else {
            return XCTFail("Failed to generate PNG data representation from snapshot",line: line)
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...