버튼으로 바꾸려는 투명한 이미지 (아래에서 "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에 clipToBounds를 놓은 다음 * btn을 넣으려고했습니다. clipToBounds를 강제로 어디에 두 었는지에 관계없이 이미지 자체는 클릭 가능하지만 배경색 부분은 아닌 동일한 결과를 제공합니다. bgColor 레이어를 제거하고 단순히 clipToBounds = YES로 btn에 배경색을 넣으려고했지만 여전히 이미지가 겹칩니다. 나는 당신의 설명으로 무언가를 놓쳤을지도 모른다. – zardon
Odd. 당신이 말하는 (배경) 영역은 좌우로 5px, 오른쪽과 아래에 17pix 크기입니다. – mvds
배경 영역은 크기에 관계없이 클릭 가능 여부를 테스트하기 때문에 지정한 크기입니다. 최종 버전에서 이미지와 동일한 크기 (몇 픽셀 빼기)가됩니다. – zardon