我用导航栏创建了布局,我将导航栏变为半透明。我添加了这段代码:
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!)
如果我理解正确,这应该在我的视图上创建叠加层。但它给了我这样的结果: 所以我认为这会错过我的看法。知道如何解决这个问题吗?
答案 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),高度和宽度与视图相同。