2017-04-12 33 views
1

我想獲取當前屏幕的截圖,所以當我覆蓋我的下一個視圖控制器時,我可以使其背後的圖像視圖顯示爲半透明。這工作,但現在它在中間產生一些奇怪的灰色。這裏是我使用的代碼:屏幕截圖 - 奇怪的灰色區域

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!) 
} 

這裏就是我找回:

我不知道爲什麼它這樣做

回答

0

在上下文中渲染的觀點是不幸的是不是100%的方法。並非所有視圖和圖層屬性都保存在屏幕截圖上。我所知道的是layer.mask(或可能是masksToBounds標誌的狀態)。這可能是你的問題,有些視圖使用了遮罩,在屏幕上它被遮住了,但是在它的屏幕截圖中,它被渲染得像面具不在那裏。