UIBezierPath剪辑背景

时间:2013-09-18 11:08:03

标签: ios objective-c uibezierpath

我正在尝试用圆形矩形剪切一个矩形,因为矩形的宽度可能只需要绘制角的一部分。总会有一个背景圆角矩形。

我有以下内容,填充颜色被剪裁,但我也得到剪裁的灰色背景。我有什么需要做的才能摆脱这个吗?

// Cell
UIBezierPath *cell = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 133, 55) cornerRadius:10];
[[UIColor greyColor] setFill];
[cell fill];

// Level
UIBezierPath *level = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 129, 55)];
[level fill];

UIBezierPath *clipPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 133, 55) cornerRadius:10];
clipPath.usesEvenOddFillRule = YES;

CGContextSaveGState(UIGraphicsGetCurrentContext()); {
    [clipPath addClip];
    [color setFill];
    [level fill];
} CGContextRestoreGState(UIGraphicsGetCurrentContext());

UIBezierPath *contact = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(135, 19, 5, 17) byRoundingCorners: UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(2.5, 2.5)];
[color setFill];
[contact fill];

1 个答案:

答案 0 :(得分:0)

灰色填充没有被剪裁的原因是因为它在剪辑添加到上下文之前发生。

你在裁剪之前和之后都在做[level fill];。在裁剪之前删除它,它应该工作。