2012-11-17 15 views
10

minimumScaleFactorと属性付き文字列を同時に使用できますか?UILabel attributedTextとminimumScaleFactor

 [myLabel setFrame:CGRectMake(6, 0, 200, 25)]; 
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, 20)]; 
    myLabel.attributedText = attStr; 
    [myLabel setAdjustsFontSizeToFitWidth:YES]; 
    [myLabel setAdjustsLetterSpacingToFitWidth:YES]; 
    [myLabel setMinimumScaleFactor:0.3]; 

これは機能していないようです。 myLabel.textを設定すると、予想どおりの縮尺で表示されます。スケーリングが正しく機能する方法

+0

このコードを実装した後にsizeToFitを試したことがありますか... –

+0

これはトリックを行う可能性があります。 –

+0

いいえ、ありません。 SizeToFitは、ラベルのフレームのサイズを文字列に収まる大きさに拡大します。 –

答えて

2

あなたは拳20文字部分を取り、その幅を取得し、その後、あなたが同じ方法を使用して、残りの部分の幅を取ることができますすることができます

CGSize maximumLabelSize = CGSizeMake(500.0,20.0);//write a really long width 

//this will turn the expected length of the labels.. 
CGSize expectedFirstLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringToIndex:21] 
sizeWithFont:[UIFont boldSystemFontOfSize:17] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 


CGSize expectedLastLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringFromIndex:20] 
sizeWithFont:[UIFont normalSystemFontOfSize:15] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 

は、あなたはそれらの長さの割合.. EX用 を知っています。最初の部分は140 px、残りは260 px、ラベルの領域は100 px、 、次に35 pxと65 pxの2種類のラベルを作成できます。 そして、両方のラベルにsetAdjustsFontSizeToFitWidthを使用できます。