0

私は 2 つの ImageView がある iPhone アプリの作成に取り組んでおり、一番上のものをタップすると、どこをタップしても、代わりに一番下のものが表示されます。

基本的に私がやりたいことは、画像から楕円/角丸を切り取ることです。これを行うには、画像をクリッピングするか、四角形のアルファ ピクセルをゼロに変更することを考えていました。私は Quartz 2D プログラミングが初めてなので、これを行う方法がわかりません。

私が持っていると仮定します:

UIImageView *topImage;
UIImageView *bottomImage;

これらの画像から CGRect/Ellipse/RoundedRect を削除するにはどうすればよいですか。これは、当選したかどうかを確認するためにスクラッチする必要がある宝くじのようなものです。

4

2 に答える 2

1

Apple docsで示されているように、通常はパス (ここでは角丸四角形を含む) からマスクを作成し、それを使用して画像をマスクしようとします。これの利点の 1 つは、ヒット テストで行う必要があるのは、タッチされたポイントを含む CGPathContainsPoint だけであることです (イメージの可視領域内にあるかどうかをテストするため)。

于 2010-02-27T23:36:30.893 に答える
0

私はこのコードを試しました:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect frame = CGRectMake(100, 100, 100, 100);
CGPathRef roundedRectPath = [self newPathForRoundedRect:frame radius:5];
CGContextAddPath(ctx, roundedRectPath);
CGContextClip (ctx);
CGPathRelease(roundedRectPath);

(あなたが送った丸みを帯びた長方形パス関数と一緒に)これは白いビューで、ビューの下には灰色のウィンドウがあるので、これはCGRectフレームで白ではなく灰色で表示されるだけだと思っていましたが、何もしませんでした.. .

于 2010-02-28T05:11:17.140 に答える