2012-08-24 2 views
2

점수 기록 응용 프로그램 (집과 부재 중) 용 UILabels가 2 개 있습니다. 사용자는 홈 또는 자리 비움을 눌러 레이블을 원하는대로 변경할 수 있습니다. 이것은 모두 정상적으로 작동합니다. 사용자가 레이블 크기보다 큰 이름을 입력하면 글꼴이 맞게 축소됩니다. 이렇게하면 두 개의 레이블이 더 이상 글꼴 크기가 일치하지 않고 제대로 표시되지 않습니다. 내 질문 : 어떻게 한 레이블의 글꼴 크기를 "autoshrunk"된 다른 레이블의 크기로 설정할 수 있습니까?자동 축소 후 글꼴 크기 결정

또한 두 글꼴 사이에 글꼴 크기가 더 작은 지 확인하고 두 글꼴을 둘 다 설정하는 코드를 작성해야합니다. 나는 위의 질문에 대한 답을 얻는 한 그 문제에 관해서는 문제가 없을 것이라고 생각합니다. 그것은 단순해야하는 것처럼 보이지만, 지금까지 나를 벗어났습니다.

답변

0

두 레이블의 프레임 크기를 알고 싶습니다.

– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:을 사용하면 사용할 최소 글꼴 크기를 찾을 수 있습니다.

의심되는 점이 있으면 알려 주시기 바랍니다. ,

- (CGFloat)actualTitleFontSize 
{ 
    NSStringDrawingContext *labelContext = [NSStringDrawingContext new]; 
    labelContext.minimumScaleFactor = 0.2; 

    NSAttributedString *attributedString = 
     [[NSAttributedString alloc] initWithString:label.text attributes:@{NSFontAttributeName : label.font}]; 
    [attributedString boundingRectWithSize:label.frame.size 
            options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading 
            context:labelContext]; 

    CGFloat actualFontSize = label.font.pointSize * labelContext.actualScaleFactor; 

    return actualFontSize; 
} 
+0

덕분에 모든 이제 완벽한 작업 : – user1465228

+1

iOS 7에서 더 이상 사용되지 않으므로 대안을 찾고 있습니다. – Gomfucius

0

은 나를 위해이 괜찮 았는데. 어떻게이 방법을 놓쳤는 지 모르겠다.