본문 바로가기

Develop/Objective-C

UILabel 세로 정렬하기 ( Vertical align )

구글링을 해보니 UILabel은 세로 정렬이 원래 없나부다..
그래서 다음과 같은 함수를 만들어서 쓴다.. 누가 만들었는지 감사하다..ㅋ 덕분에 금방해결~ 


 

- (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;

}
 
 
 

사용할때는~

CGRect dataRect = CGRectMake(box_x, box_y, box_width, box_height);

        UILabel *textLabel = [[[UILabel alloc] initWithFrame:dataRect] autorelease];

        textLabel.textAlignment = UITextAlignmentLeft;

        //textLabel.text = dataText;

        textLabel.font = [UIFont systemFontOfSize:12];

        textLabel.textColor = [UIColor colorWithRed:168.0/255.0 green:165.0/255.0 blue:165.0/255.0 alpha:1.0];

        textLabel.backgroundColor = [UIColor clearColor];

        //textLabel.adjustsFontSizeToFitWidth = YES;

        textLabel.lineBreakMode = UILineBreakModeWordWrap;

        textLabel.numberOfLines=0;

        

        [self setUILabel:textLabel withMaxFrame:dataRect withText:dataText usingVerticalAlign:0];//위치가 매우 중요합니다..^^ addsubview 해주기 바로 전에 해주세요.. 아니면 정렬이 안될수도 있어요~

        [self.view addSubview:textLabel];