http://www.cocoachina.com/bbs/read.php?tid=189979&page=2
谢谢各位了,找到问题的原因所在了。在NSAttributeString中找到了这句话。默认用来计算的字体和大小。
UIKIT_EXTERN NSString *const NSFontAttributeName NS_AVAILABLE_IOS(6_0); // UIFont, default Helvetica(Neue) 12
吃亏就在这了,在所有计算方法里需要用到attributes这个参数的时候我都传nil,导致计算的大小和UILabel默认的字体大小不一致,计算出错。
附上我的最终效果和代码。
UIKIT_EXTERN NSString *const NSFontAttributeName NS_AVAILABLE_IOS(6_0); // UIFont, default Helvetica(Neue) 12
吃亏就在这了,在所有计算方法里需要用到attributes这个参数的时候我都传nil,导致计算的大小和UILabel默认的字体大小不一致,计算出错。
附上我的最终效果和代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 21)];
label.backgroundColor = [UIColor orangeColor];
[
self
.view addSubview:label];
NSMutableAttributedString
*attributeString = [[
NSMutableAttributedString
alloc] initWithString:@
"TViewController"
];
//计算文字大小,参数一定要符合相应的字体和大小
CGSize attributeSize = [attributeString.string sizeWithAttributes:@{
NSFontAttributeName
:label.font}];
//计算字符间隔
CGSize frame = label.frame.size;
NSNumber
*wordSpace = [
NSNumber
numberWithInt:(frame.width-attributeSize.width)/(attributeString.length-1)];
//添加属性
[attributeString addAttribute:
NSKernAttributeName
value:wordSpace range:
NSMakeRange
(0, attributeString.length)];
label.attributedText = attributeString;
|