屏幕截图 - 奇怪的灰色区域
问题描述:
我想获取当前屏幕的截图,所以当我覆盖我的下一个视图控制器时,我可以使其背后的图像视图显示为半透明。这工作,但现在它在中间产生一些奇怪的灰色。这里是我使用的代码:屏幕截图 - 奇怪的灰色区域
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!)
}
这里就是我找回:
我不知道为什么它这样做
答
在上下文中渲染的观点是不幸的是不是100%的方法。并非所有视图和图层属性都保存在屏幕截图上。我所知道的是layer.mask
(或可能是masksToBounds
标志的状态)。这可能是你的问题,有些视图使用了遮罩,在屏幕上它被遮住了,但是在它的屏幕截图中,它被渲染得像面具不在那里。