10

次のようにカスタムボタンフレームを描画しようとしています。

UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                                  cornerRadius:RECT_CORNECR_RADIUS];

[stroke stroke];

しかし、何らかの理由で、コーナーカーブはサイドよりも思慮深く見えます。UIButtonのデフォルトのフレームを見ると、非常に均一です。AはUIButton、Bはカスタムボタンです。

UIButtonのようにする方法についてのアイデア。

AはUIButton、Bはカスタムボタンです

4

2 に答える 2

25

あなたはあなたのボタンの境界をなでています。これにより、ビューの端の中央に線が描画されるため、線の太さの半分が境界の外側にあり、描画されません。これが、コーナーが完全な厚さである理由です。境界の長方形(線の太さの半分で挿入)で使用CGRectInsetし、その長方形をストロークします。

于 2011-10-27T07:59:40.457 に答える
0

あなたが抱えている問題はおそらくアンチエイリアシングが原因です。beizerPathを描画する前に、CoreGraphicsのアンチエイリアス設定を変更してみてください。

より簡単な解決策はCALayer、ボタンとそのcornerRadiusプロパティを使用することです。丸みを帯びた角を描く方が簡単でしょう

selfカスタムボタンの場合:

self.layer.cornerRadius = RECT_CORNER_RADIUS;
self.layer.borderWidth = 1.0f;
self.layer.borderColor = [UIColor blackColor].CGColor;

もちろん、QuartzCoreフレームワークをインポートし、これが機能するようにヘッダーをインポートすることを忘れないでください(#import)

于 2011-10-27T07:53:49.480 に答える