2012-11-17 71 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]; 

那么你就会知道它们的长度的速度.. 为前。第一部分是140像素,其余部分是260像素,你的标签面积是100像素, 然后你可以创建2个不同的标签,35像素和65像素。 然后你可以对两个标签使用setAdjustsFontSizeToFitWidth。