0

私はコアグラフィックスに非常に慣れていません。

基本的に、グラデーションの背景を描画するビューがあり、このビューのサブクラスを別のビューで作成し、このサブクラスで三角形を描画しようとしています。

何が起こるかというと、グラデーションが描画されていないということです。サブクラスが 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];
}
4

1 に答える 1

1

サブクラスの drawRect: の開始時に呼び出す[super drawRect:rect];と、最初にグラデーションが描画され、次に三角形が描画されます。

于 2013-02-25T20:54:03.023 に答える