【发布时间】:2026-01-09 06:35:02
【问题描述】:
我正在开发一个涉及隐私的应用,我想在应用启动时模糊主屏幕(然后我要求进行本地身份验证等)
我遇到的主要问题是我不知道如何在视图显示之前访问它。
如果我尝试在- (void)viewDidLoad 内获取视图,则不应用模糊效果(因为视图尚不存在),如果我尝试访问- (void)viewDidAppear:(BOOL)animated 内的视图,则非模糊视图会出现一秒钟应用了模糊效果。
有没有办法在它显示在屏幕上之前获取视图并应用模糊效果?
我用于应用模糊效果的代码是:
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)viewWillAppear:(BOOL)animated吗?此外,您应该最初设计带有模糊层的视图,并在不再需要它时将其隐藏。 -
也许在 viewWillAppear 中隐藏主视图中的内容(添加到子视图并隐藏)?
-
或许可以试试 viewWillDisplay。
-
@jeffamaphone - (void)viewWillAppear:(BOOL)animated 不起作用,同样的问题。视图尚未渲染,因此未应用模糊。
-
@Yanchi 我知道还有其他解决方案,比如隐藏视图或覆盖某些东西,但我喜欢模糊效果并想使用它。
标签: ios objective-c