簡體   English   中英

在iOS 7/8上呈現之前,對視圖應用模糊效果?

[英]Apply blur effect to a view before presenting on IOS 7/8?

我正在處理涉及隱私的應用程序,我想在應用程序啟動時模糊主屏幕(然后我要求進行本地身份驗證等。)

我遇到的主要問題是,在顯示視圖之前我不知道如何訪問它。 如果我嘗試在- (void)viewDidLoad獲取視圖,則不會應用模糊效果(因為視圖尚不存在),並且如果我嘗試在- (void)viewDidAppear:(BOOL)animated訪問視圖,則在應用模糊效果之前,會出現一秒鍾的非模糊視圖。

有沒有一種方法可以獲取視圖並在屏幕上顯示模糊效果之前應用模糊效果?

im用於應用模糊效果的代碼是:

UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
UIVisualEffectView * visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = self.view.window.bounds;
[UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:visualEffectView];

提前致謝。

不知道為什么,但是即使在- (void)viewDidLoad ,獲取和模糊主線程中的視圖也可以正常工作。 模糊是即時的,非模糊的版本根本不會顯示。

    dispatch_async(dispatch_get_main_queue(), ^{
        //blur here
    });

現在,即使從AppDelegate調用,它也能正常工作!

@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...
    [self addBlurLayer];
    // ...
    return YES;
}

-(void)addBlurLayer
{
    dispatch_async(dispatch_get_main_queue(), ^{
        if(visualEffectView==nil)
        {
            UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
            visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
            visualEffectView.frame = self.window.bounds;
            [UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:visualEffectView];
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM