2009-10-25 12 views
3

나는 480x331이고 배경이 투명합니다. 투명 부분은 이미지 가장자리 근처에 있습니다. 내 UIButton은 72x37입니다. 버튼의 IB에서 이미지를 배경 이미지로 설정하면 이미지의 투명한 가장자리가 버튼에 흰색으로 표시됩니다. 이미지가 없으면 버튼이 흰색으로 둥근 모서리입니다. 나는 그것이 내가 볼 수있는 흰색이라고 생각하고있다. 그렇다면 이미지 투명도가 작동하지만 버튼의 흰색 영역이 보이고 있음을 의미합니다.이미지 대 UIButton의 배경 이미지

이미지를 UIButton의 Image 속성으로 설정하면 뷰 모드를 변경 한 후에도 이미지의 크기가 올바르게 조정되지 않고 전체 크기로 유지됩니다.

확대/축소 및 투명도를 올바르게 적용하려면 어떤 속성을 사용해야한다고 제안합니까?

답변

7

어떤 버튼 유형을 사용하고 있습니까?

UIButtonTypeRoundedRect 스타일을 사용하고있을 가능성이 있지만 UIButtonTypeCustom이 더 적합 할 수 있습니다. 인터페이스 빌더의 속성 창에서 변경할 수 있습니다.

6

@Christopher Fairbaim이 UIButtonTypeCustom의 사용을 제안하는 것이 옳습니다. UIButtonTypeRoundedRect를 사용하면 투명 영역에 흰색 배경이 생깁니다.

그러나 인터페이스 빌더에서 물건을 배선하는 데는 한계가 있습니다. 데이터 세트 또는 사용자 입력에 기반하여 UIView, UIButton 및 애셋을 동적으로 생성하려면 프로그래밍 방식으로 수행하는 것이 좋습니다. (이 또한 다른 UIButtonTypes 함께 작동합니다,하지만 난이 특정 투명성 예를 들어 UIButtonTypeCustom을 사용했습니다 참고.)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom]; 

원하는 속성을 변경하려면 :을 :

버튼을 만들려면

btnName.backgroundColor = [UIColor clearColor]; 
btnName.frame = CGRectMake(100, 100, 72, 37); //(X coord, Y coord, width, height) 
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside]; 

는 (이 투명 .PNG의입니다 가정) 다양한 상태에 대한 이미지를 추가하려면 :

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"]; 
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal]; 
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"]; 
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted]; 

의 (a의 ViewController 클래스 내에서) 뷰에있는 버튼을 추가하려면 :

[self addSubview:btnName]; 

(사면 오타, 나는 복사 내 프로젝트 중 하나에서 붙여 넣기 및 일반화하는 시도로 이름 지정)