屏幕截图 - 奇怪的灰色区域

时间:2017-04-12 15:50:09

标签: swift uiimage

我正在尝试捕获我当前所在的屏幕,因此当我覆盖我的下一个视图控制器时,我可以使其背后的图像视图并使其显示为半透明。这是有效的,但现在它在中间产生了一些奇怪的灰色。这是我正在使用的代码:

    func requestOverride(overrideReason : String, notificationName : Notification.Name) {

    captureScreen { (image) in
        ManagerOverride.image = image

        let vc = UIStoryboard(name: "ManagerOverride", bundle: nil).instantiateViewController(withIdentifier: "overrideNav") as! UINavigationController
        let over = vc.viewControllers.first as! ManagerOverrideViewController
        let _ = over.view
        over.overrideReason.text = overrideReason
        over.notifyName = notificationName
        UIApplication.shared.keyWindow?.currentViewController()?.present(vc, animated: true, completion: nil)
    }
}

func captureScreen(completion: @escaping (UIImage) -> ()) {
let view = UIApplication.shared.keyWindow!.currentViewController()!.view!
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.main.scale)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
completion(image!)
}

以下是我要回来的内容:

我不知道为什么要那样做

1 个答案:

答案 0 :(得分:0)

不幸的是,在上下文中渲染视图不是100%的方法。并非所有视图和图层属性都保存在屏幕截图中。我所知道的是layer.mask(或可能是masksToBounds标志的状态)。这可能是你的问题,有些视图使用了一个掩码,屏幕上它被掩盖了,但是在屏幕截图上它被渲染成面具不在那里。