2012-12-02 5 views
0

레이블을 설정했으며 레이블에 일부 텍스트가 있습니다. 이제 모든 텍스트가 레이블에 들어 맞는 글꼴을 설정하려고합니다. 레이블 텍스트가 매일 바뀌기 때문에 최소한의 글꼴 크기로 사용했습니다. 그러나 suddendly 그것은 일하지 않을 것이다. 내가 뭔가 잘못하고있는거야? 여기최소 글꼴 크기 문제

내 코드 :

CGRect infoLabelRect = CGRectMake(10, 250, 260, 350); 


UILabel *infoLabel = [[UILabel alloc] initWithFrame:infoLabelRect]; 
infoLabel.text = @"bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla"; 
infoLabel.numberOfLines = 9; 
infoLabel.font = [UIFont systemFontOfSize:17]; 
infoLabel.minimumFontSize = 12; 
infoLabel.adjustsFontSizeToFitWidth = YES; 
infoLabel.textColor = [UIColor whiteColor]; 
infoLabel.textAlignment = NSTextAlignmentCenter; 
infoLabel.backgroundColor = [UIColor clearColor]; 
infoLabel.shadowColor = [UIColor blackColor]; 
infoLabel.shadowOffset = CGSizeMake(0, 1); 
[infoLabel sizeToFit]; 

내가 표시 텍스트가 없다 슬픈 rmaddy 무엇을하지만 시도했다.

여기 내 코드는 작동하지 않습니다. 제안 사항이 있으십니까?

UILabel *infoLabel = [[UILabel alloc] initWithFrame:infoLabelRect]; 
    NSString *text = @"bla bla bla"; 
    UIFont *font = nil; 
    CGFloat points = 17; 
    CGFloat maxHeight = infoLabel.frame.size.height; 
    CGFloat textHeight; 
    do { 
     font = [UIFont systemFontOfSize:points]; 
     CGSize size = CGSizeMake(infoLabelRect.size.width, 100000); 
     CGSize textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode: NSLineBreakByWordWrapping]; 
     textHeight = textSize.height; 
     points -= 1; 
    } while (textHeight > maxHeight); 

    infoLabel.font = font; 
    infoLabel.textColor = [UIColor whiteColor]; 
    infoLabel.textAlignment = NSTextAlignmentCenter; 
    infoLabel.backgroundColor = [UIColor clearColor]; 
    infoLabel.shadowColor = [UIColor blackColor]; 
    infoLabel.shadowOffset = CGSizeMake(0, 1); 
    [infoLabel sizeToFit]; 
    [contentView addSubview:infoLabel]; 
+1

의미? 항상 fontSize 17입니까? 또는 텍스트를 자르는 것입니까? –

+0

항상 글꼴 크기가 17 – MasterRazer

답변

2

minimumFontSize의 사용은 한 줄의 레이블에만 적용됩니다. 여러 줄 또는 줄 바꿈 레이블은 글꼴 크기를 조정하지 않습니다. minimumFontSize 용 문서에서

:

이 속성의 디폴트 값은 0.0이다. 레이블에 글꼴 조정을 사용하면 항상이 값을 늘려야합니다. numberOfLines 속성 글꼴 크기를 계산하는 NSString sizeWithFont:constrainedToSize:lineBreakMode: 방법을 사용할 수 있도록 1

하나의 솔루션으로되는 설정 할당 된 공간에 레이블의 텍스트 맞춤을해야하는 경우에만이 속성은 유효합니다.

편집 : 작동해야 비슷해 (이 될 수있는 오타를 테스트하지 않음) :

"늘 일을"무엇
NSString *text = @"hello"; 
UIFont *font = nil; 
CGFloat points = 17; 
CGFloat maxHeight = infoLabel.frame.size.height; 
CGFloat textHeight; 
do { 
    font = [UIFont systemFontOfSize:points]; 
    CGSize size = CGSizeMake(infoLabelRect.size.width, 100000); 
    CGSize textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode: NSLineBreakByWordWrapping]; 
    textHeight = textSize.height; 
    points -= 1; 
} while (textHeight > maxHeight); 

infoLabel.font = font; 
+0

나에게 좋은 예가 있습니까? – MasterRazer

+0

예를 들어 나에게 이것을 보여줄 수 있다면 행복 할 것이다. – MasterRazer

+2

@NoahRaissi 약간의 인내심을 가져라. 나는 코드를 타이핑하는 중 바빴다. – rmaddy