NDA がダウンしていると思うので、この質問をすることができます。私は UIView サブクラスを持っています:
BlurView *blurredView = ((BlurView *)[self.view snapshotViewAfterScreenUpdates:NO]);
blurredView.frame = self.view.frame;
[self.view addSubview:blurredView];
これまでのところ、画面をキャプチャする役割を果たしていますが、今度はそのビューをぼかす必要があります。これについてどうすればいいですか?私が読んだことから、ビューの現在の内容 (コンテキスト?!) をキャプチャし、それを CIImage (いいえ?) に変換してから、CIGaussianBlur を適用してビューに戻す必要があります。
どうすれば正確にそれを行うことができますか?
PSビューはアニメーション化されていないため、パフォーマンスに関しては問題ありません。
編集:これが私がこれまでに持っているものです。問題は、スナップショットを 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;
}