UILabel问题与总和

时间:2017-01-31 10:30:49

标签: ios swift nsstring uilabel nsattributedstring

我的UILabel有一个很长的文本(不同情况和语言的文本不同,我使用AttributedString),它以金额结束。 Smth喜欢:

This amount will be taken from your account: 12.00 $

Label的numberOfLines = 0,因此有时文字看起来像

This amount will be taken from your account: 12.00 
$

在12.00和$之间设置换行非常重要,因为它看起来很糟糕。有什么特别的符号吗 html中 ,所以我可以把它放在12.00和$之间?所以UILabel永远不会在12和$之间打破?

所以我想要的是:

This amount will be taken from your account: 
12.00 $

This amount will be taken from your account: 12.00 $

This amount will be taken from 
your account: 12.00 $

但它永远不应该像

This amount will be taken from your account: 12.00 
$

4 个答案:

答案 0 :(得分:4)

  

是否有像html中的特殊符号,所以我可以把它   介于12.00和$?之间

对于这种情况,您可以使用nobreak空格字符\u00a0

示例:

let text = "This amount will be taken from your account: 12.00\u{00a0}$"

enter image description here

答案 1 :(得分:0)

您可以添加非破坏性的unicode空格字符,但是,您正在做的是错误的。

您应该使用NSNumberFormatter,其样式设置为.currencycurrencyCode设置为USD

那会给你:

  1. 自动打破空间
  2. 正确格式化所有语言(即英语为$12.00,英语为负数$(12.00),欧洲语言区为12.00 US$

答案 2 :(得分:0)

请注意,我标记为重复的问题。

正如duplicated question中所述,您需要使用"No-Break Space" unicode character "\u00a0"

我想建议您使用NumberFormatter来处理货币字符,类似于:

let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let amount = formatter.string(from: 12.0 as NSNumber) {
    print(amount) // $12.00
}

答案 3 :(得分:-1)

因此,请确保您没有在标签上设置高度限制,并执行此操作。

var value = 12.00
yourLabel.numberOfLines = 0
yourLabel.text = "This amount will be taken from your account: \n \(value) $"