0

UIBezierpath で丸みを帯びた四角形を作成しました。これは私にとって非常にうまく機能します。四角形の丸みを帯びたエッジが一種のエイリアシング効果を持つという問題が 1 つだけあります。ここに写真がありますコーナーのエイリアシング

次のように丸みを帯びた四角形を作成します。

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);
4

1 に答える 1

0

私が見る限り、それは2つの問題のうちの1つである可能性があります。

組み合わせると奇妙に見える色で描いています。灰色の上に明るい緑色があると、奇妙に見える場合があります。

また、shadowConstとheightFactorについては、分割しないように注意して、フレームのサイズまたは配置が0.5になるようにしてください。したがって、たとえば、幅に必要なサイズが同じである場合[size].5、描画される側はぼやけます。フレームのxまたはy値をに設定した場合も同じです[value].5

于 2012-07-28T16:49:15.113 に答える