ボタンに変えたい透明な画像(以下「hold_empty.png」)があります。ボタンの内側には、背景色を保持する実際の画像よりもわずかに小さいサイズの背景色のビューがあります。bgcolorで透明な画像ボタンを作る
画像が丸みを帯びているため、画像よりも大きく見えるため、単に画像に背景色を付けることができないためです。
画像は "丸い角" を有する透明正方形です。私が作成しようとしている効果は、レイヤーのようにする必要があります。
- 地色層(赤、緑、等)
- "hold_empty.png" ピクチャ(上記)
- (BGカラー層を含む)オブジェクト全体がクリック可能であるべきです。
私が経験している問題は、画像(およびその境界線)のみがクリック可能で、オブジェクト全体ではないように見えるということです。
コードは以下のとおりです。
// x,y,w,h
CGRect frame = CGRectMake(10, 10, 72, 72);
CGRect frame2 = CGRectMake(5, 5, 60, 60); // I know this is not filling the image, its just a test
UIView *bgColorView = [[UIView alloc] initWithFrame:frame2];
[bgColorView setFrame:frame2];
bgColorView.backgroundColor = [UIColor redColor];
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"hold_empty" ofType:@"png"]];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn addSubview:bgColorView];
[btn setImage:image forState:UIControlStateNormal];
btn.frame = frame;
[btn addTarget:self action:@selector(btnSelectColor:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
[bgColorView release];
要約:背景色をクリックして透明なイメージボタンを作成するにはどうすればよいですか?
ありがとうございました。
私は、UIView * bgColorView、次に* btnにclipToBoundsを配置してみました。 ClipToBoundsをどこに強制しても、同じ結果が得られます。画像自体はクリック可能ですが、色付きの背景部分は表示されません。私はbgColorレイヤーを削除しようとしましたが、単にclipToBounds = YESでbtnに背景色を入れましたが、それでもイメージは重なっていました。私はあなたの説明で何かを見逃しているかもしれません。 – zardon
Odd。あなたが話している(バックグラウンド)領域は、上下左右に5px、右と下に17pxです – mvds
背景エリアは、サイズに関係なくクリック可能かどうかをテストするために指定したサイズです。最終バージョンでは画像と同じサイズ(マイナス数ピクセル)になります。 – zardon