나를 귀찮게 하는 아이폰의 api 부재
레이블에 대해서 문자의 가로정렬은 쉽게 되지만, 세로정렬은 sdk 의 속성을
눈 씻고 찾아봐도 찾을 수 없어 구걸신에게 또 구걸하여 아래와 같은 코드를 얻었다.
개념은 NSString의 sizeWithFont 메소드를 사용하여 실제로 그려질 크기를 손쉽게 구한 후에
이 값을 UILabel의 frame에 대입해주는 것이다.
아래 예제는 top 정렬 뿐 아니라 bottom 정렬도 가능한 예제이다.
- (void)setUILabel:(UILabel *)myLabel
withMaxFrame:(CGRect)maxFrame
withText:(NSString *)theText
usingVerticalAlign:(int)vertAlign
{
CGSize stringSize =
[theText sizeWithFont:myLabel.font
constrainedToSize:maxFrame.size
lineBreakMode:myLabel.lineBreakMode];
switch (vertAlign) {
case 0: // vertical align = top
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
myLabel.frame.origin.y,
myLabel.frame.size.width,
stringSize.height);
break;
case 1: // vertical align = middle
// don't do anything,
// lines will be placed in vertical middle by default
break;
case 2: // vertical align = bottom
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
(myLabel.frame.origin.y + myLabel.frame.size.height)
- stringSize.height,
myLabel.frame.size.width,
stringSize.height);
break;
}
myLabel.text = theText;
}
참조: http://discussions.apple.com/thread.jspa?messageID=8322622