所以我有一个UIViewController
(AViewController),它有一个UIButton,模拟地呈现另一个UIViewController(BViewController)。 BViewController有一个模糊AViewController的UIVisualEffectView。在storyboard中,我将背景颜色设置为以下0%的不透明度:BViewController的视图,以及UIVisualEffectView及其视图。所以它应该是完全透明的,只是有模糊效果。
大部分时间这都按预期工作。但是,大约有3次中的1次(但是随机地,即我找不到模式),ViewController的背景是深灰色而不是透明。而且它不透明。
我试图以编程方式确保颜色清晰。如果我在viewDidLoad中将背景(BViewController和UIVisualEffectView及其视图)设置为clearColor,则没有任何变化,即它大约每4次中有3次起作用。但是,如果我在viewDidAppear中设置背景,那么它会变成深灰色的确切颜色,并且在任何时候都不会透明(而不是1次3次)。
代码很简单,UIViewControllers在故事板中设置。
在AViewController中
var aViewController = storyboard!.instantiateViewControllerWithIdentifier("AViewController") as!
self.presentViewController(aViewController, animated: false, completion: nil)
在BViewController中
self.dismissViewControllerAnimated(false, completion: nil)
**编辑:XCODE中简单的测试项目,以复制问题**
这给了我9/10倍的深灰色背景 - 让我意识到我之前从未提出过没有segue的模态UIViewController。
BViewController
class BViewController: UIViewController {
@IBAction func exit(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
AViewController
class AViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func present(sender: AnyObject) {
var bViewController = storyboard!.instantiateViewControllerWithIdentifier("bViewController") as! BViewController
self.presentViewController(bViewController, animated: false, completion: nil)
}
}
答案 0 :(得分:0)
连接Segue
据我所知,它正在发生,因为当你呈现一个带有segue的视图控制器时,它会通过它连接到的视图控制器呈现,并且也只放在当前堆栈中,即ViewControllerA所在的堆栈。
没有连接的segue,即启动ViewController
但是当你初始化一个视图控制器,即ViewControllerB时,它会被加载到一个新的堆栈中,因此它在它下面找不到任何视图控制器,因此在制作ViewControllerB的主视图时它会显示深灰色或黑色。颜色为CLEAR颜色。
//我希望我能够表达自己,并对你有所帮助。快乐编码:)