Objective c Xcode-标签赢得';当数字为十进制时自动收缩
我正在做一个应用程序,计算一些数字,一些答案没有小数点,一些有。所以我做了一个if-else,使用Objective c Xcode-标签赢得';当数字为十进制时自动收缩,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我正在做一个应用程序,计算一些数字,一些答案没有小数点,一些有。所以我做了一个if-else,使用NSNumberFormatter格式化数字,这取决于它们是否有小数 否则,一切正常,数字格式正确,标签自动收缩正确。但是,当数字有小数时,它不会自动收缩。如果所有数字都没有进入标签,它将删除最后的小数,直到没有小数为止。那就行了 例如,如果我有“123456789.123456789”,标签将不会大到足以显示所有这些内容,而是显示“123456789.1234”。如果我更改参数,使答案为10倍,则
NSNumberFormatter
格式化数字,这取决于它们是否有小数
否则,一切正常,数字格式正确,标签自动收缩正确。但是,当数字有小数时,它不会自动收缩。如果所有数字都没有进入标签,它将删除最后的小数,直到没有小数为止。那就行了
例如,如果我有“123456789.123456789”,标签将不会大到足以显示所有这些内容,而是显示“123456789.1234”。如果我更改参数,使答案为10倍,则答案将为“1234567891.234”。现在,在我转到“1234567891234”之前,它不会自动收缩以让我看到数字。但是,当数字没有小数时,它将自动收缩,我将看到所有的数字
下面是有效的代码(当没有小数时):
以下是不起作用的代码:
NSNumber *input = [NSNumber numberWithDouble: numberDouble];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@","];
[formatter setUsesGroupingSeparator:YES];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];
stringWithDecimals = [formatter stringFromNumber:input];
NSMutableString* someString = [NSMutableString stringWithString: stringWithDecimals];
[someString appendString: @" unit"];
stringWithDecimals = someString;
label.text = stringWithDecimals;
变量“numberDouble”是双精度的
所以我要做的是让它在第二种情况下起作用。非常感谢 我不认为您是指自动收缩,但您始终可以将数字转换为字符串(无论如何,您必须这样做才能将其放入标签),然后使用NSString的实例方法sizeWithFont:获取标签显示整个数字所需的大小 代码如下所示:
NSString *yourString = [NSString stringWithFormat:@"%f", yourNumber];
CGSize labelSize = [yourString sizeWithFont:yourFont];
假设这是一个
UILabel
,我认为它不支持在文本更改时自动更改其边界(您可以通过设置背景颜色来测试它,并查看实际大小)
但您可以在更新文本后手动将
sizeToFit
发送到标签,使其更改其边界以适应所有文本。我不想更改其边界,我想更改字体大小,使其适合标签。实际的UILabel将始终保持相同的大小,但是数字或字体的大小将发生变化。只是尝试了一下,它不起作用。只要有小数点,字体大小就不会调整。如果在if-else的情况下有小数,唯一的区别是我在NSNumberFormatter中使用setNumberStyle:nsnumberforatterdecimalstyle。这可能就是问题所在…嗯调整字体大小调整宽度接缝对我来说既适用于“123456789123456789”又适用于“123456789.123456789”,标签会调整字体,以便显示所有文本。你做了一个屏幕截图吗?我添加了代码,看一看!有一些事情我没有提到,你会看到,我希望这将有助于找到问题。谢谢你的帮助!您是否也可以包括相关的标签创建或修改代码?或者至少它是如何设置,大小调整,截断等。我尝试了几次,我没有得到它的工作。看看问题的描述,我已经添加了代码,这可以帮助您理解。谢谢你的建议!将最后一个字符串的末尾加上小数,然后从中获取sizeWithFont:的大小。
NSString *yourString = [NSString stringWithFormat:@"%f", yourNumber];
CGSize labelSize = [yourString sizeWithFont:yourFont];