关闭导航栏missalignes视图的半透明度

时间:2016-02-09 10:13:45

标签: ios swift layout

我用导航栏创建了布局,我将导航栏变为半透明。我添加了这段代码:

var overlay : UIView? // This should be a class variable

overlay = UIView(frame: view.frame)
overlay!.backgroundColor = UIColor.blackColor()
overlay!.alpha = 0.8

view.addSubview(overlay!)

如果我理解正确,这应该在我的视图上创建叠加层。但它给了我这样的结果: enter image description here 所以我认为这会错过我的看法。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

  

它正在发生,因为如果设置半透明,则视图原点会发生变化   关闭。因此,不要使用view.frame使用view.bounds

var overlay : UIView?

overlay = UIView(frame: view.bounds)
overlay!.backgroundColor = UIColor.blackColor()
overlay!.alpha = 0.8

view.addSubview(overlay!)

答案 1 :(得分:0)

替换您的代码,如下所示。

overlay = UIView(frame: view.bounds)
overlay!.backgroundColor = UIColor.blackColor()
overlay!.alpha = 0.8

view.addSubview(overlay!)

使用边界代替框架的原因是, 你已经变成了半透明。因此,您的视图将从(0,64)开始,而不是(0,0);

这就是为什么它的帧值为y = 64, 您可以设置y = 0或直接使用view.bounds,在边界中它将给出(x,y)=(0,0),高度和宽度与视图相同。