Я считаю, что NDA не работает, поэтому я могу задать этот вопрос. У меня есть UIView подкласс:Скрытый экран с моментальным снимком iOS 7
BlurView *blurredView = ((BlurView *)[self.view snapshotViewAfterScreenUpdates:NO]);
blurredView.frame = self.view.frame;
[self.view addSubview:blurredView];
Он делает свою работу до сих пор захватить экран, но теперь я хочу, чтобы размыть эту точку зрения. Как именно я это делаю? Из того, что я прочитал, мне нужно зафиксировать текущее содержимое представления (контекст ?!) и преобразовать его в CIImage (нет?), А затем применить к нему CIGaussianBlur и вернуть его обратно в представление.
Как именно я это делаю?
P.S. Представление не анимировано, поэтому оно должно быть в порядке.
EDIT: Вот что у меня есть до сих пор. Проблема в том, что я не могу захватить снимок в UIImage, я получаю черный экран. Но если я добавлю представление в качестве подзаголовка напрямую, я вижу, что снимок есть.
// Snapshot
UIView *view = [self.view snapshotViewAfterScreenUpdates:NO];
// Convert to UIImage
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Apply the UIImage to a UIImageView
BlurView *blurredView = [[BlurView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
[self.view addSubview:blurredView];
blurredView.imageView.image = img;
// Black screen -.-
BlurView.m:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.imageView = [[UIImageView alloc] init];
self.imageView.frame = CGRectMake(20, 20, 200, 200);
[self addSubview:self.imageView];
}
return self;
}
В образце кода WWDC2013 имеется категория UIImageView. –
Я проверил его, но он использует изображение из активов в качестве источника, в то время как мне нужно использовать моментальный снимок. Который я не могу понять. –