Developer/iOS

[iOS] UILabel 의 텍스트 만큼 자동으로 맞추기

블로blow 2011. 5. 25. 16:59
728x90

//기존의 레이블의 프레임을 저장해 놓습니다.

CGRect labelrect = label.frame;


NSString *new = [NSString stringWithFormat:@"%@", @"바사나다라마나다라마나다라마나다라마나다라마바"];


//스트링을 레이블에 셋팅합니다.

[label setText:new];

//레이블의 프레임을 저장합니다.

CGRect newBounds = label.bounds;

//레이블의 폰트에 맞춰서 레이블을 라인하나로 맞게 합니다.

newBounds.size = [new sizeWithFont:label.font];


//레이블(한줄로 늘어놓은) 넓이를 기존의 레이블의 넓이로 나누어서 레이블의 높이를 구합니다.

NSNumber *num = [NSNumber numberWithFloat:newBounds.size.width/labelrect.size.width];

//소숫점은 하나 해줘야 하므로 해줍니다.

int labelline = [num intValue]+1



if(labelrect.size.height > newBounds.size.height*labelline)

{

    //레이블을 라인수대로 늘려줍니다.

    [label setFrame:CGRectMake(labelrect.origin.x, labelrect.origin.y, labelrect.size.width, newBounds.size.height*labelline)];

}else

{

    [label setFrame:CGRectMake(labelrect.origin.x, labelrect.origin.y, labelrect.size.width, labelrect.size.height)];

}


//레이블에 라인을 설정해줍니다.

label.numberOfLines = labelline;

728x90