1

-drawRect:いくつかのカスタム ビューを描画するためにオーバーライドしています。通常、ドロップ シャドウを使用して、塗りつぶされた丸みを帯びた四角形のベジェ パスを描画します。ただし、厄介な問題に遭遇しました。影の色を設定すると、塗りつぶしの色も同じ色に変更されます!

これは Core Graphics のバグですか、それとも何か不足していますか? これは、影のあるパスを描画しようとしている私のコードの例です。translucentBlackhighlightは 2 つの異なるUIColorオブジェクトですが、描画されるのは、ハイライト カラーとハイライト カラーの影で塗りつぶされた丸みを帯びた四角形です。

UIBezierPath* blackTranslucentRoundedRectPath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(CGRectGetMinX(frame) + 5, CGRectGetMinY(frame) + 5, CGRectGetWidth(frame) - 10, CGRectGetHeight(frame) - 10) cornerRadius: 8];
CGContextSetShadowWithColor(context, highlightOffset, highlightBlurRadius, highlight.CGColor);
[translucentBlack setFill];
[blackTranslucentRoundedRectPath fill];

何か案は?ありがとう!

4

1 に答える 1

2

何が起こっているかというと、半透明の黒色を通してハイライトの色が見えるということです。を透明でない色に変更するtranslucentBlackと (アルファを 1.0 に等しくする)、問題ないはずです。

于 2012-11-19T21:32:13.650 に答える