添加渐变作为视图顶层的最佳方法是什么?

时间:2011-04-22 23:17:59

标签: iphone ios ipad uiview gradient

我有一个自定义的UIView类,我在其上添加了一个UIScrollView。我想要做的是向UIView的图层添加渐变,以便在滚动视图上方可见。目前我这样做:

[self.layer insertSublayer:self.leftShadowLayer atIndex:[self.layer.sublayers count]];
[self.layer insertSublayer:self.rightShadowLayer atIndex:[self.layer.sublayers count]];

但这看起来有点hackish,并且由于某种原因容易出问题。是否有任何其他首选方式添加子图层是视图中的顶层,无论其他内容添加到视图的哪个层?

Thx

2 个答案:

答案 0 :(得分:0)

使用CGGradientCreateWithColorComponents()或CGGradientCreateWithColors()绘制渐变。 文档位于 -

CGGradientRef guide

答案 1 :(得分:0)

请参阅示例代码以绘制CALayer,您可以将其添加到UIView的图层属性。

-(void)drawInContext:(CGContextRef)theContext

{    

// self.opacity = .5;
    CGMutablePathRef thePath = CGPathCreateMutable();

//CGPathMoveToPoint(thePath,NULL,100.0f,200.f);

CGPoint aOnePoint=CGPointMake(cgpoint.x,tipPoint.y);
CGPoint aTwoPoint=CGPointMake(cgpoint.x+5,460);
CGPoint aThreePoint=CGPointMake(320,100);
CGPoint aFourPoint=CGPointMake(320,tipPoint.y-25);
CGPoint points[]={aOnePoint,aTwoPoint,aFourPoint};
CGPathAddLines(thePath, NULL,points,3);



CGContextBeginPath(theContext);
CGContextAddPath(theContext, thePath);
//CAGradientLayer here...using the CGCreateGradient methods.


CGContextSetLineWidth(theContext,2.0f);

CGSize theShadowSize = CGSizeMake(4.0f,4.0f);

CGContextSetShadowWithColor(theContext, theShadowSize,3,[UIColor darkGrayColor].CGColor);
CGContextSetFillColorWithColor(theContext,[UIColor redColor].CGColor);
CGContextFillPath(theContext);

CFRelease(thePath);

}

通过这种方式,您可以绘制自己的图层并将其添加到视图的.layer属性中。 请注意,我们必须覆盖- (void)drawInContext:(CGContextRef)theContext才能拥有自定义图层。可能需要致电

希望有所帮助..