2011-05-24 44 views
0

我在为两个不同字符串获取正确帧时遇到了一个问题。我通过下面的代码运行两个字符串:设置后标签大小发生变化,具体取决于字符串

UILabel *myLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 
myLabel.lineBreakMode = UILineBreakModeWordWrap; 
myLabel.numberOfLines = 2; 
myLabel.textAlignment = UITextAlignmentCenter; 
myLabel.font = [UIFont boldSystemFontOfSize:11]; 
myLabel.text = @"About Stores" 
myLabel.text = @"About Rivers" 

CGSize myLabelSize = CGSizeMake(70,28); 
[myLabel sizeWithFont:myString.font  // <-- One of two strings 
    constrainedToSize:aLabelSize 
     lineBreakMode:UILineBreakModeWordWrap]; 

结果为myString1 =>宽度:70,高度:28
结果为myString2 =>宽度:70,高度:14

为什么有这里有什么不同?

+1

什么是myString.font?什么是标签大小?你在第二行缺少一个分号。 – titaniumdecoy 2011-05-24 16:54:15

+0

@Jason:更新了我的问题。它是一个UILabel。 – Abhinav 2011-05-24 17:27:17

回答

0

问题我看到:

的NSString没有字体属性。您可能想用UILabel.font替换“myString.font”,其中UILabel将被计划用于显示字符串的UILabel实例替换。

sizeWithFont应该返回您在CGSize实例存储CGSize。

似乎你不是很清楚使用它。我已经发布了关于如何正确使用sizeWithFont的答案。你应该看看这里:Place two UILabels side by side left and right without knowing string length of text in left label

顺便说一下,这就是为什么你看到高度上的差异...我认为垃圾值是作为字体大小参数传入。如果您对字体大小参数进行硬编码,您会看到一致的结果。

+0

@Siddharth:我更新了我的问题。它不是一个NSString,而是一个UILabel。 – Abhinav 2011-05-24 17:26:50

+0

@Abhinav:你看过链接了吗?这个答案有帮助吗?你是否还将myLabel.font作为“sizeWithFont”方法中的字体参数传递? – Sid 2011-05-24 17:32:29

+0

@Siddharth:是的,我将正确的值传递给sizeWithFont,并用断点检查它。对于我的两个文本字体和约束大小是相同的,但它返回不同的结果。对于一个文本,它将其包装为两行,而其他文本则保存在一行中。 – Abhinav 2011-05-24 17:41:55

0

只需更换上述码N试用一下.....我硝酸钾穿上它是否工作强制检查:)

[myLabel sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:11]  
constrainedToSize:myLabelSize lineBreakMode:UILineBreakModeWordWrap]; 

也“;”在标签中缺失

myLabel.text = @“关于商店”; myLabel.text = @“关于河流”;`

问候..

0

有一个区别,因为系统字体为黑体,这是一个可变大小的字体。 myString1中的文本比myString2中的文本更宽,所以字符串需要换行以适合第二行。由于您指定了最多2行和UILineBreakModeWordWrap,这就是您所得到的。如果您希望它适合一行,请使myLabelSize稍宽或使用较小的字体大小。

相关问题