在pushViewController AlphaComponent无法正常工作

问题描述 投票:1回答:2

我正在尝试从NavigationController推送viewcontroller,并且在viewcontroller中我将AlphaComponent设置为透明效果,但它不起作用。它正在使用presnt,但它不适用于Push,如何解决这个问题?

    let vc = SelectGeoLocation(nibName: "SelectGeoLocation", bundle: nil)
    self.navigationController?.pushViewController(vc, animated: true)
ios swift iphone cocoa-touch pushviewcontroller
2个回答
3
投票

嗯,这是因为你的UIViewcontrollers的层次结构

让我解释一下,

UINavigationControllerUIViewControllers的最后一个堆叠,当你推动一个UIViewController你将它推入堆栈意味着你的UIViewController后面没有任何东西,因为UIWindow层次结构在UINavigationController内部包含一个元素。

看看这个图像,解释什么是最后一个堆栈,考虑这是你的UINavigationViewController与其UIViewControllers作为数据元素enter image description here

现在为什么它在你present UIViewController时起作用,只是因为你将UIViewController覆盖在你当前可见的那个上面。

查看此图片展示工作方式。 enter image description here

包起来:

当你在现场设置View.backgroundColor = .clear时,你可以看到你现在的UIViewController的背后,但是当你推动你只是看到黑屏,因为那里没有任何东西。

简短回答:除非你出席,否则你无法看到背后的东西。


0
投票

初始化时,SelectGeoLocation的视图未加载。

您是否尝试将self.view.alpha = xxx放入SelectGeoLocation-ViewDidLoad中?

© www.soinside.com 2019 - 2024. All rights reserved.