2014-06-08 41 views
0

我设置梯度,以我的观点的背景:CAGradientLayer只背景

CAGradientLayer *grad = [CAGradientLayer layer]; 
grad.frame = self.contentView.frame; 
grad.colors = @[(id)[[UIColor colorWithRed:1.0f green:0.5f blue:0.5f alpha:0.0f] CGColor], 
       (id)[[UIColor colorWithWhite:1.0f alpha:0.5f] CGColor], 
       (id)[[UIColor colorWithWhite:1.0f alpha:0.8f] CGColor], 
       (id)[[UIColor colorWithWhite:0.0f alpha:1.0f] CGColor]]; 
grad.locations = @[@0.00f, @0.5f, @0.7f, @1.00f];   
self.layer.mask = grad; 

问题是,每一个元素(的UIButton,...的UILabel)对我的看法的顶部有那么同样gradietn父。我如何才能为视图设置渐变,而不是为此视图上的项目设置渐变?

回答

1

而不是设置面膜,你可以设置渐变为您的视图的子层,如下:

[self.view setBackgroundColor:[UIColor clearColor]]; 
[self.view.layer insertSublayer:grad atIndex:0]; 
+0

那没有为我做透明背景。我可以看到gradietn,但UIView不透明,所以我不能在它下面看到UIView。我尝试将backgroundColor设置为ClearColor,但没有效果。 –

+0

@MartinPerry很难说没有看到你的代码和视图结构。但看看是否有帮助:[self.view setBackgroundColor:[UIColor clearColor]]; – kushyar

+0

谢谢..它做到了。我在storyboard中设置了clearColor,而不是在代码中。在代码中设置它的工作。 –

0

这就是面具是应该做的。 :-)

您可以使用不是超级视图(但可能是同级)的专用背景视图来查看绘制在其上的其他视图。 当你不使用它作为子视图的超级视图,而是作为兄弟姐妹的兄弟姐妹(全部共享相同的超级视图)时,那么顺序是重要的。确保首先绘制背景视图。当它位于视图层次结构树中“子视图”的上方但位于同一级别内时,位于IB中。