ios - 具有模糊背景的模态导航 Controller ,在推送动画期间无缝?

标签 ios uinavigationcontroller uivisualeffectview

我以模态方式呈现导航 Controller ,以 TableView Controller 为根,并在用户点击单元格时推送更多 View Controller 。现在,我想对整个事物应用模糊/活力效果。

Storyboard看起来像这样:

enter image description here

现在,想要对整个导航 Controller 应用模糊效果,以便可以在下方看到初始 View Controller 中的图像。

通过对 TableView Controller 和详细 View Controller 应用相同的模糊效果,我取得了一些成功,如下所示:

TableView Controller

class TableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.tableFooterView = UIView(frame: .zero)

        tableView.backgroundColor = UIColor.clear
        let blurEffect = UIBlurEffect(style: .dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        tableView.backgroundView = blurEffectView
        tableView.separatorEffect = UIVibrancyEffect(blurEffect: blurEffect)
    }
}

细节 View Controller

class DetailViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .clear
        let blurEffect = UIBlurEffect(style: .dark)
        let blurView = UIVisualEffectView(effect: blurEffect)
        blurView.translatesAutoresizingMaskIntoConstraints = false
        view.insertSubview(blurView, at: 0)
        NSLayoutConstraint.activate([
            blurView.heightAnchor.constraint(equalTo: view.heightAnchor),
            blurView.widthAnchor.constraint(equalTo: view.widthAnchor),
        ])
    }
}

(我还将导航的模态呈现样式设置为.overFullScreen)

但是,在导航过渡到详细 View Controller 的最后,在模糊的背景中可以看到一个烦人的伪像:

enter image description here

我认为这与自 iOS 7 以来,推送的 View Controller 不能有透明背景有关,否则可以看到推送的 View Controller 在转换结束时立即被删除。

我尝试将模糊效果应用到导航 Controller ,并将两个 subview 改为透明,但它看起来也不太好。

无缝地将背景模糊/活力效果应用到导航 Controller 的内容的正确方法是什么?

最佳答案

尝试以下步骤。我还没有尝试过,但应该可以。

  1. 将背景图像添加到窗口到 didFinishLaunchingWithOptions 并默认隐藏它。
  2. 将相同的图像添加到呈现模态视图 Controller 中。
  3. 确保清除 View Controller 的背景。
  4. 因此,当您呈现时,它会显示模态视图 Controller 中的图像。
  5. 完成后取消隐藏窗口图像并隐藏 View Controller 图像。
  6. 当您点击后退按钮关闭 View 时,首先取消隐藏您的 View Controller 图像并隐藏您的窗口图像。所以你的动画看起来很正常。

如果您需要任何帮助,请告诉我。

关于ios - 具有模糊背景的模态导航 Controller ,在推送动画期间无缝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771344/

相关文章:

ios - iOS 中包含的 View Controller 的大小裁剪 91 像素

ios - 选择后 UITableViewCell 内容发生变化

ios - XCode 4.6.3 - 在单 View 项目中添加和加载另一个屏幕

ios - 推送导航 Controller 时出现异常 - iOS

iphone - 如何使用 Interface Builder 添加导航 Controller ?

ios - 如何从navigationBar中删除UIPageControl?

ios - 如何在 iOS Music App 中实现向上滚动时的 UINavigationBar 动画?

swift - segue 后模糊背景 View

ios - 如何去除 UIBlurEffect 产生的白色外发光

ios - UIVisualEffectView 不工作