在drawRect中绘制形状会删除渐变

时间:2013-02-25 20:52:03

标签: iphone ios objective-c xcode ipad

我对核心图形非常陌生。

基本上我有一个绘制渐变背景的View,我试图用另一个创建这个视图的子类,然后在这个子类中绘制一个Triangle形状。

发生的是没有绘制渐变。我怀疑因为我的子类正在drawRect中绘制一个三角形(超级绘制其渐变)我的子类覆盖了drawRect方法,并且忽略了超级。

如何同时绘制渐变和三角形?

这是我的子类的drawRect

的代码
- (void)drawRect:(CGRect)rect
{
     // get the current content
CGContextRef context = UIGraphicsGetCurrentContext();

CGFloat buttonHeight = self.bounds.size.height;
CGFloat buttonWidth = self.bounds.size.width;

// draw triangle
UIBezierPath *path = [UIBezierPath bezierPath];

[path moveToPoint:CGPointMake(buttonWidth / 2, buttonHeight * .75)];
[path addLineToPoint:CGPointMake(buttonWidth * .75, buttonHeight * .25)];
[path addLineToPoint:CGPointMake(buttonWidth * .25,buttonHeight * .25)];

CGContextAddPath(context, path.CGPath);
CGContextClip(context);
[_arrowColor set];
[path fill];
}

1 个答案:

答案 0 :(得分:1)

如果你在子类'drawRect:的开头调用[super drawRect:rect];,那么它首先绘制渐变,然后是三角形。