0

ボタンに「ボトムハイライト」を作成するために、私はもともとこのコードを持っていました:

CGContextAddPath(context, highlightPath);
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5]CGColor]);
CGContextFillPath(context);

これにより、ボタンと同じスペースにハイライトが描画されますが、1 ピクセル低くなり、ボタンが透明ではないため、これはうまく機能しました。ただし、透明なものがいくつかあるので、描画領域からボタンの後ろの領域を削除する必要があります。

これを行うために使用しようとしましEOClipたが、使用する組み合わせを理解できませんでした。ボタンのパスはbuttonPath、ハイライト パスは同じですが 1 ピクセル低く、 と呼ばれhighlightPathます。ハイライトパスへの描画中に、内部での描画を停止するにはどうすればよいbuttonPathですか?

編集:

わかりました、これと2行目と3行目を切り替えると、形状全体が色付けされ、次のエラーが発生しますclip: empty path.

CGContextEOClip(context);
CGContextAddPath(context, buttonPath);
CGContextAddPath(context, highlightPath);
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]);
CGContextFillPath(context);
4

1 に答える 1

1

チャットから結論付けられたように、両方のパスを追加し、偶奇フィルモードでフィルして、目的の結果を得ることができます

CGContextAddPath(context, buttonPath); 
CGContextAddPath(context, highlightPath); 
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]);
CGContextEOFillPath(context);
于 2013-05-27T10:39:54.157 に答える