首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController -使用UIBlurEffect清除背景

UINavigationController -使用UIBlurEffect清除背景
EN

Stack Overflow用户
提问于 2017-02-24 01:15:49
回答 2查看 1.2K关注 0票数 1

我在一个以.crossDissolve过渡风格呈现的UIViewController中使用UIBlurEffect。UIViewController的视图中添加了一个collectionView,因此两者都有一个清晰的背景。

HomeViewController.swift

代码语言:javascript
复制
func showLiveDealsCategory(sender:UITextField){
    let catSelection = LiveDealCategorySelection()
    //let navContr = UINavigationController(rootViewController: catSelection)
    catSelection.modalPresentationStyle = .custom
    catSelection.modalTransitionStyle = .crossDissolve
    self.present(catSelection, animated: true, completion: nil)
}

LiveDealCategorySelection.swift

代码语言:javascript
复制
func setupBackgroundView(){
    if !UIAccessibilityIsReduceTransparencyEnabled() {
        self.view.backgroundColor = .clear
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = (self.view?.bounds)!
        blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self.view?.addSubview(blurEffectView)
    } else {
        self.collectionView?.backgroundColor = UIColor.black
    }
}

这是您可以看到LiveDealCategorySelection后面的mapView的结果

问题是当我将视图控制器嵌入到UINavigationController中时,因为我不能将它的背景色设置为.clear

代码语言:javascript
复制
func showLiveDealsCategory(sender:UITextField){
        let catSelection = LiveDealCategorySelection()
        let navContr = UINavigationController(rootViewController: catSelection)
        catSelection.modalPresentationStyle = .custom
        catSelection.modalTransitionStyle = .crossDissolve
        self.present(navContr, animated: true, completion: nil)
}

LiveDealCategorySelection中,我尝试了:

代码语言:javascript
复制
 override func viewWillAppear(_ animated: Bool) {
        if self.navigationController != nil {
            self.navigationController!.view.backgroundColor = .clear
            self.navigationController!.view.tintColor = .clear
        }
  }

我还试图在实例化导航控制器时将背景颜色设置为.clear,但得到的是黑色背景。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-24 02:11:14

您只是忘了将演示文稿样式移动到UINavigationController

代码语言:javascript
复制
navContr.modalPresentationStyle = .custom
票数 2
EN

Stack Overflow用户

发布于 2017-02-24 01:21:23

使用导航控制器,您无法实现您想要的功能。只有带有OverCurrentContext的模态演示,支持从一个视图控制器转换到另一个具有清晰或半透明背景的视图控制器。

如果您希望此视图控制器的背景模糊,则使用带有“自定义(或当前上下文以上)”的模式表示来呈现此视图控制器。

或者试试这个:

代码语言:javascript
复制
func showLiveDealsCategory(sender:UITextField){
        let catSelection = LiveDealCategorySelection()
        let navContr = UINavigationController(rootViewController: catSelection)
        navContr.modalPresentationStyle = .custom  // << Mark this update
        catSelection.modalPresentationStyle = .custom
        catSelection.modalTransitionStyle = .crossDissolve
        self.present(navContr, animated: true, completion: nil)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42422218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档