2015-05-14 4 views
3

Я размыл свое представление программно и добавил расширение для общего доступа со скриншотом, но скриншот не размывает мое изображение на изображении. Все программы в быстромUIBlurEffect не работает при попытке сделать скриншот программно в swift

код для размывания

let blurEffect = UIBlurEffect(style:.Dark) 
let blurView = UIVisualEffectView(effect: blurEffect) 
blurView.frame = imageView2.frame 
self.view.addSubview(blurView) 

Код для скриншоте

UIGraphicsBeginImageContext(view.frame.size) 
view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

Благодарности

ответ

7

Попробуйте принимать SCRE Enshot таким образом:

UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0) 
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 
+0

Большое спасибо! Он отлично работал –

+0

Хотя вы не могли бы мне помочь, строка состояния отсутствует –

+0

Изменить 'view.drawViewHierarchy ...' на 'view.window? .drawViewHierarchy ...' – pteofil

2

Я просто нашел Apple, фактически документированную о том, как сделать снимок UIVisualEffectView:

Захват снимок UIVisualEffectView Многие эффекты требуют поддержки со стороны окна, на котором размещена UIVisualEffectView. Попытка сделать снимок только UIVisualEffectView приведет к созданию моментального снимка, который не будет содержать эффект. Чтобы сделать снимок иерархии представлений, содержащий UIVisualEffectView, вы должны сделать снимок всего UIWindow или UIScreen, который содержит его.

Спасибо!

Смежные вопросы