2014-11-25 7 views
2

Я хочу сделать снимок экрана из моего приложения программно, а код работает нормально, но у меня есть UIVisualEffectView с эффектом размытия, и скриншот дал мне изображение без размытия! Как я могу сделать снимок экрана, чтобы размыть?Скриншот программно и размытие в Swift

UIGraphicsBeginImageContextWithOptions(fullView.bounds.size, true, 1) 
self.fullView.layer.renderInContext(UIGraphicsGetCurrentContext()) 
var viewImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil) 

ответ

1

После снятия скриншота программный эффект может быть добавлен эффект размытия. Ниже приведен пример использования библиотеки GPUImage, которая может быть установлена ​​с использованием CocoaPods. Подобный эффект также может быть достигнут с использованием собственных библиотек Apple.

3

Чтобы сохранить UIVisualEffectView размытие при съемке изображения на экране в программе, вы должны принимать изображение на весь экран.

Вот более техническое определение предусмотрено Apple:

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

+0

Благодарим вас за ответ, есть ли способ добавить эффект размытия к части экрана, когда я снимаю снимок даже без UIVisualEffectView? – BandarAljahmi

+1

@BandarAljahmi Я добавил пример того, как размыть изображение программно, хотя это должен быть принятый ответ. –

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