2014-06-17 4 views
0

제약 조건이 설정된 UIlabel이 있습니다. 왼쪽과 오른쪽 모두와 수직 중심에 대한 구속 조건이 레이블로 설정되었습니다. 부모 뷰 폭은 동적이며 평균은 넓거나 같을 수 있지만 높이는 정적입니다. 레이블은 길거나 짧은 텍스트로 설정됩니다. 글꼴을 줄 바꿈하지 않고 한 줄만 설정할 수 있도록 최소 글꼴 크기를 설정합니다. 최소 글꼴 크기를 설정했기 때문에 텍스트 높이가 자동으로 조정되어 텍스트에 맞게 조정되지만 텍스트는 이 아니고 UIlabel의 아래쪽에 세로로 배치됩니다. UIlabel의 크기를 조정하려고했지만 새 글꼴 크기와 새 크기를 설정할 때 적절한 크기로 크기를 조정할 수 없습니다. 글꼴 크기를 가져 와서 높이를 동적으로 설정하여 솔루션을 시도했지만 예기치 않은 결과가 발생했습니다. iOS 6에서 실행 중입니다.세로 중심 UILabel 크기 크기 조정 글꼴

답변

0

나는 그것을 스스로 알아 냈습니다. 다음은 샘플 코드입니다.

+(void)autoFontResizeLabel:(UILabel*)label inView:(UIView*)containerView{ 

    NSString *text = label.text; 
    //determine the font size 
    CGFloat actualFontSize; 
    [text sizeWithFont:label.font 
      minFontSize:18 
      actualFontSize:&actualFontSize 
       forWidth:label.bounds.size.width 
      lineBreakMode:label.lineBreakMode]; 

    //reset the label content and frame 
    [label setText:@""]; 
    [label setText:text]; 
    //turn off auto adjust to allow new text with correct font 
    label.adjustsFontSizeToFitWidth = NO; 

    [label setFont:[UIFont fontWithName:@"HelveticaNeue" size:actualFontSize]]; 
    //optional 
    [label sizeToFit]; 
    CGSize barSize = containerView.frame.size; 

    CGFloat titleY = fabsf(barSize.height - label.frame.size.height)/2; 
    [label setFrame:CGRectMake(label.frame.origin.x, titleY, label.frame.size.width,  label.frame.size.height)]; 
}