[iPhone] UILabel 문자열 크기에 맞추어 frame 변경하기

iPhone 개발의 모든 컨트롤은 frame이라는 개념을 사용하여 뷰에 붙이게 됩니다.

이는 컨트롤이 붙을 위치와 차지할 크기를 가지고 있는 CGRect라는 이름의 구조체를 사용합니다.

UILabel을 사용할 경우에 보면 글자의 길이를 예측하기 힘든 경우가 많습니다. 하지만 뷰에 붙이기 전에 크기를 결정 지어야 하죠.

이 문제는 문자열의 크기에 맞추어 자동으로 frame이 맞추어 지면 해결되는 문제입니다. 다음과 같은 방법을 사용하시면 됩니다.

[code]#import <UIKit/UIStringDrawing.h>
 
NSString *labelText = @”Hello, Nice to meet you”;
CGSize labelSize = [labelText sizeWithFont:[UIFont systemFontOfSize:14.0f]];
UILabel label = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 10.0f, labelSize.width, labelSize.height)];
label.text = labelText;
label.font = [UIFont systemFontOfSize:14.0f];
[self.view addSubView:label];
[label release];
 
NSLog(@”label size is %f, %f”,labelSize.width, labelSize.height);[/code]

찍히는 로그를 보시면 아시겠지만 labelText의 폰트와 글자 길이에 따라 labelSize의 값이 바뀌게 됩니다.

멀티라인을 이용할 경우는 [이곳]을 참고하세요.