現在、UIView全体をぼかす必要のあるiPhoneアプリを作成しています。どうすればこれを達成できますか?このフレームワークを見たことがありますが、UIViewでは機能しないと思います。UIViewをぼかす別の方法はありますか?
更新:以下の私の更新された回答を確認してください。iOS7とiOS8の登場との関連性がさらに高まります。
現在、UIView全体をぼかす必要のあるiPhoneアプリを作成しています。どうすればこれを達成できますか?このフレームワークを見たことがありますが、UIViewでは機能しないと思います。UIViewをぼかす別の方法はありますか?
更新:以下の私の更新された回答を確認してください。iOS7とiOS8の登場との関連性がさらに高まります。
これは機能するはずです。何が起こっているのかを理解するのに役立つように、コードにコメントしました。
//To take advantage of CIFilters, you have to import the Core Image framework
#import <CoreImage/CoreImage.h>
//Get a UIImage from the UIView
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//Blur the UIImage with a CIFilter
CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];
[gaussianBlurFilter setValue:imageToBlur forKey: @"inputImage"];
[gaussianBlurFilter setValue:[NSNumber numberWithFloat: 10] forKey: @"inputRadius"];
CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"];
UIImage *endImage = [[UIImage alloc] initWithCIImage:resultImage];
//Place the UIImage in a UIImageView
UIImageView *newView = [[UIImageView alloc] initWithFrame:self.view.bounds];
newView.image = endImage;
[self.view addSubview:newView];
コードについて質問がある場合は、コメントに残してください。
注: CIGaussianBlurは5.1の時点ではiOSに存在しないため、デバイス5.x以降のビューをぼかす別の方法を見つける必要があります(このヒントを提供してくれた@BradLarsonに感謝します)。この質問で受け入れられた答えは、このライブラリと同様に、代替として有望に見えます。
iOS 7のリリース以来、この質問は多くのヒットを得ており、私は自分がやったことをフォローアップする必要があると思いました。
当時、私はフォトショップで写真を個人的にぼかしましたが、動的および静的なぼかしを行う優れたサードパーティ製ライブラリが多数あります。ここにいくつかあります。
UITabBar
iOS 7のネイティブブラーを取得するために、任意のビューからレイヤーを取得して適用します:
https ://github.com/JagCesar/iOS-blur/個々のフレームや画面のスクリーンショットを撮る必要がなくなったので、これを投稿したいと思います。
iOS 8:iOS 8の次のリリースで、Appleには組み込みのぼかしが含まれていUIView
ますUIVisualEffectView
(https://developer.apple.com/documentation/uikit/uivisualeffectview)
iOS 8では、を使用UIVisualEffectView
してビューをぼかすことができます。参照:https ://developer.apple.com/documentation/uikit/uivisualeffectview
このコードを使用して簡単に解決しました。
UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:yourView.bounds];
toolBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 7.0) {
toolBar.barTintColor = nil;
toolBar.translucent = YES;
toolBar.barStyle = UIBarStyleBlack;
}
else
[toolBar setTintColor:[UIColor colorWithRed:5 green:31 blue:75 alpha:1]];
[yourView insertSubview:toolBar atIndex:0];
ビューをぼかす最も簡単な方法は、UIToolbarを追加することです。アルファ値を変更するだけで、ぼけを変更できます。
self.toolbar = [[UIToolbar alloc]initForAutoLayout];
[self.view addSubview:self.toolbar];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:0];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:0];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:NAVBAR_HEIGHT];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:0];
self.toolbar.alpha = 0.5;