我正在开发一个涉及隐私的应用程序,我想在应用程序启动时模糊主屏幕(然后我要求本地认证等等)。
我遇到的主要问题是,在视图显示之前,我不知道如何访问它。如果我试图在- (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];
提前谢谢。
发布于 2014-09-15 09:21:10
不知道为什么,但是在主线程中获取和模糊视图很好,甚至在- (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];
}
});
}
https://stackoverflow.com/questions/25852914
复制