我正在尝试做一些非常简单的事情。我想为我的一个视图添加渐变。我可以将它添加到self.view,但不能添加到viewWithGradient。这是代码:
CAGradientLayer *gradient = [CAGradientLayer layer];
UIColor *colorFirst = [UIColor colorWithWhite:0.10 alpha:0.15];
UIColor *colorLast = [UIColor colorWithWhite:0.535 alpha:0.8];
NSArray *colors = [NSArray arrayWithObjects:(id)colorFirst.CGColor, colorLast.CGColor, nil];
gradient.colors = colors;
NSNumber *stopFirst = [NSNumber numberWithFloat:0.00];
NSNumber *stopLast = [NSNumber numberWithFloat:1.00];
NSArray *locations = [NSArray arrayWithObjects:stopFirst, stopLast, nil];
gradient.locations = locations;
gradient.frame = CGRectMake(0.0, viewWithGradient.frame.origin.y, viewWithGradient.frame.size.width, height_of_gradient);
[self.view.layer addSublayer:gradient]; // this works. I get a nice gradient at
// the bottom of the view, where I want it,
// but I need the gradient further down in
// my view hierarchy.
// [viewWithGradient.layer addSublayer:gradient]; // this doesn't. There
// is no visually noticeable change
// if this is uncommented and the
// above line is.
viewWithGradient是viewController(self.view)中主视图内的一个小视图。这个viewWithGradient只有一个其他视图。它是一个UILabel,只占用了viewWithGradient区域的一半左右。它具有透明背景,但标签将其文本绘制为白色。我需要让梯度在UILabel之下,而不是在自我视图之上,而不是UILabel。
我目前怀疑我的框架/边界可能会使渐变偏离屏幕。有没有人看到我错过的任何东西?这似乎是最简单的CALayer用法,而且我花了太多时间在它上面。
答案 0 :(得分:0)
渐变框架的y坐标为viewWithGradient.frame.origin.y
。你真的想要0吗?如果viewWithGradient超过屏幕的一半,则渐变将在屏幕外绘制。