UIButton을 사용하는 방법 중에 Title에 글자를 입력하면 항상 중앙에 있는 것이 문제였다.

이 문제를 해결하기 위해 Title Label을 가져와 frame을 바꾸는 삽질을 하였지만 ControlState 값이 바뀌면 다시 원상복구 되어 버리는다.

그래서 UIButton을 자세히 본 결과 재미있는 프로퍼티를 찾았다.

(UIButton).titleEdgeInsets 항목이다. 그리고 타입도 UIEdgeIndests 라는 녀석인데 처음 보는 녀석이였다.

UIEdgeIndests  내용을 보아하니 top, bottom, left, right 이것 뿐이다. 내가 margin이나 padding을 주기위해 쓰던 이름과 동일했다.

그래서 해당 타입의 구조체를 만들어 titleEdgeInsets에 입력을 해보니 역시나 예상대로 해당 구조체의 값 만큼 padding값이 적용되었다. ㅋㅋㅋㅋㅋ

UIButton * button = [[UIButton alloc]initWithFrame:frame];

[button setBackgroundImage:[UIImage imageNamed:@"btn_effect_frame_normal.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"btn_effect_frame_press.png"] forState:UIControlStateHighlighted];
       
[button setTitle:@"테스트" forState:UIControlStateNormal];
[button setTitle:@"테스트2" forState:UIControlStateHighlighted];
       
[button setTitleColor:COLOR_B9B8B8 forState:UIControlStateNormal];
[button setTitleColor:COLOR_WHITE forState:UIControlStateHighlighted];
       
[button.titleLabel setFont:FONT_12];
       
UIEdgeInsets edge;
edge.top = 98;
[button setTitleEdgeInsets:edge];

[button release];

앞으로는 패딩값을 입력할 경우가 생길 때 UIEdgeIndests 구조체를 이용해야겠다. ㅋㅋㅋ

+ Recent posts