欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS实现从后台切换到前台有毛玻璃效果

程序员文章站 2022-08-12 22:10:39
iOS实现从后台切换到前台有毛玻璃效果,为了保护用户的隐私加入了后台毛玻璃效果(其实并没有什么卵用),怎么实现呢,其实很简单,只需要在appDelegate中写几行代码即可。 1...

iOS实现从后台切换到前台有毛玻璃效果,为了保护用户的隐私加入了后台毛玻璃效果(其实并没有什么卵用),怎么实现呢,其实很简单,只需要在appDelegate中写几行代码即可。

1. OC版本

首先声明一个变量 visualEffectView
@property (strong, nonatomic)UIVisualEffectView *visualEffectView;

- (UIVisualEffectView *)visualEffectView{
    if (!_visualEffectView) {
        UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
        _visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
        _visualEffectView.frame = [UIScreen mainScreen].bounds;
    }
    return _visualEffectView;
}

//当 app 处于 inactive 状态时, 添加 visualEffectView 。
- (void)applicationWillResignActive:(UIApplication *)application {
    [[UIApplication sharedApplication].keyWindow addSubview:self.visualEffectView];
}

//当 app 处于 active 状态时, 移除 visualEffectView 。
- (void)applicationDidBecomeActive:(UIApplication *)application {
    if (self.visualEffectView) {
        [self.visualEffectView removeFromSuperview];
    }
}

2. swift版本

private var visualEffectView: UIView!

//增加 getVisualEffectView() 方法
private func getVisualEffectView() -> UIView {
    if nil == visualEffectView {
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
        visualEffectView = UIVisualEffectView(effect: blurEffect)
        visualEffectView.frame = UIScreen.main.bounds
    }

    return visualEffectView
}


//当 app 处于 inactive 状态时, 添加 visualEffectView 。
func applicationWillResignActive(application: UIApplication) {
 // Add visualEffectView
 UIApplication.shared.keyWindow?.addSubview(getVisualEffectView())
}

//当 app 处于 active 状态时, 移除 visualEffectView 。
func applicationDidBecomeActive(application: UIApplication) {
    // Remove visualEffectView
    if nil != visualEffectView {
        visualEffectView.removeFromSuperview()
    }
}