2014-03-06 85 views
1

我已經確定了UILabel的範圍。單行,2-3個字。我必須改變字體大小。以編程方式將內容調整爲強烈確定的矩形的最佳解決方案是什麼?UILabel的自動調整內容

回答

0

我找到了解決方案,手動檢查尺寸。其他解決方案工作不正常。可能是這個代碼將有助於某人。這裏需要解決的代碼:

-(void) autoResizeLabel: (UILabel*) label withMaxWidth:(CGFloat)mw withMaxHeight:(CGFloat)mh 
{ 

    CGFloat fontSize = 1.f; 

    CGFloat outSize = fontSize; 
    CGFloat mDelta = 30.f; 
    CGFloat delta = 1.f; 
    BOOL activated = NO; 
    BOOL broken = NO; 
     for (float fSize = fontSize; fSize < fontSize + mDelta; fSize += delta) 
    { 
     CGRect r = [label.text boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fSize]} context:nil]; 
     CGFloat width = r.size.width; 
     CGFloat height = r.size.height; 


     if (mw <= width || mh <= height) 
     { 
      if (activated) 
      { 
       outSize = fSize - delta; 
      } 
      broken = YES; 
      break; 
     } 
     activated = YES; 

     //NSLog(@"%f;%f;%f",fSize,mw,mh); 
    } 
    if (activated && !broken) outSize = fontSize + mDelta - delta; 
    [label setFont:[UIFont systemFontOfSize:outSize]]; 


} 
0

設置標籤

_myLabel.adjustsFontSizeToFitWidth = YES; 
_myLabel.minimumScaleFactor = 0.5f; 
+0

它在空中工作嗎? – Vyacheslav

+0

它確實如果你設置了_myLabel.adjustsFontSizeToFitWidth = YES;' – Eugene

+0

奇怪。它不適用於我的設備。 – Vyacheslav

0

使用自動收縮特性的最小字體規模在廈門國際銀行(或程序),並設置最小字體大小和你的文本將被適應的空間。但是最小的字體。

enter image description here

+0

如果它有效,它適用於舊的iOS版本 – Vyacheslav