使用RoundedRect对UIBezierpath进行抗锯齿处理

时间:2012-07-28 15:10:37

标签: iphone ios core-graphics uibezierpath

我用UIBezierpath创建了一个圆角矩形,对我来说非常有用。只有一个问题是矩形的圆角具有一种混叠效果。 这是一张图片Aliasing on corners

我像这样创建圆角矩形:

CGFloat radius = 12;
CGRect frame1 = CGRectMake(self.bounds.origin.x, self.bounds.origin.y+(self.bounds.size.height/heightFactor), self.bounds.size.width-shadowConst, self.bounds.size.height-(self.bounds.size.height/heightFactor)-shadowConst);

CGRect frame2 = CGRectMake(self.bounds.size.width-(self.bounds.size.width/widthFactor), self.bounds.origin.y+(self.bounds.size.height/(heightFactor*2)), (self.bounds.size.width/widthFactor)-shadowConst, (self.bounds.size.height/heightFactor));

UIBezierPath *result =
[UIBezierPath bezierPathWithRoundedRect: frame1 cornerRadius:radius];
[result appendPath:
 [UIBezierPath bezierPathWithRoundedRect: frame2 cornerRadius:radius]];
[result fill];
[result addClip];
CGContextDrawLinearGradient(context, gradient2, CGPointMake(0, 0), CGPointMake(0, self.bounds.size.height), 0);

1 个答案:

答案 0 :(得分:0)

据我所知,这可能是两个问题之一:

您使用的颜色在组合时看起来很奇怪。灰色的亮绿色可能会让它看起来很奇怪。

另外,对于你的shadowConst和heightFactor,要注意你没有划分,所以框架的大小或位置是0.5。因此,例如,如果宽度所需的大小等于[size].5,它将绘制一个模糊的一面。如果将帧的x或y值设置为[value].5

,则相同