• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 关闭模态视图后删除模态模糊效果

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:44:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

目前我正在使用 MapView 开发一个项目,当用户按下按钮时,它会呈现一个模态视图。

modalView 使用了 iOS 8 典型的 Blur 效果。

问题是,我可以呈现带有模糊效果的模型 View ,并且可以将其关闭,但我无法移除 map 的模糊效果。

当前代码:

ViewController.m

- (void)actionSheetUIActionSheet *)actionSheet clickedButtonAtIndexNSInteger)buttonIndex {
    NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
    if  ([buttonTitle isEqualToString"Set a alarm"]) {

        [self blurEffectMethod];

        AlarmViewController *modal = [self.storyboard instantiateViewControllerWithIdentifier"setAlarm"];
        modal.transitioningDelegate = self;
        modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;
        [self presentViewController:modal animated:YES completion:nil]

-(void)blurEffectMethod {
    UIVisualEffect *blurEffect;
    blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    UIVisualEffectView *visualEffectView;

    if (_radiusSlider.hidden == NO) {
        visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
        visualEffectView.frame = _mapView.bounds;
        [_mapView addSubview:visualEffectView];
        //Hide Bars & Slider
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
        _toolBar.hidden = YES ;
        _radiusSlider.hidden= YES;
        _sliderIndicator.hidden = YES;
    }

}

ModelViewController.m

- (IBAction)dismisModalid)sender {
    [_audioPlayer stop];
    [self dismissViewControllerAnimated:YES completion:nil];
}

如何在关闭 modalView 的同时从 mapView 中删除模糊 SubView?



Best Answer-推荐答案


这就是我设法让模态模糊工作的方法!

let vc = UIViewController()
vc.view = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
vc.modalPresentationStyle = .OverFullScreen

let nc = UINavigationController(rootViewController: vc)
nc.modalPresentationStyle = .OverFullScreen

presentViewController(nc, animated: true, completion: nil)

这里我在 prepareForSegue 上使用 .OverFullScreen 标志。在我的 viewControllers 上设置了一个模糊 UIVisualEffectView

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    if segue.identifier == "LifeEventSegue" {
        if let nc = segue.destinationViewController as? UINavigationController {
            nc.modalPresentationStyle = .OverFullScreen
            if let vi = nc.viewControllers.first as? UIViewController {
                vi.modalPresentationStyle = .OverFullScreen
            }
        }
    }
}

关于ios - 关闭模态视图后删除模态模糊效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492871/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap