【问题标题】:NSMutableAttributedString not working in ViewController but works in PlaygroundNSMutableAttributedString 在 ViewController 中不起作用,但在 Playground 中起作用
【发布时间】:2017-10-29 14:38:14
【问题描述】:

我的代码有问题,我不知道我做错了什么。我首先在 Playground 中尝试了所有东西,它就像一个魅力。将此分配给 UILabel 它只是不起作用。

let nameSurname = "\(postAddSetup.nameSurname.text!)"
let checkIn = " - \(setLocationPlace), \(setLocationCity)"

var string = postAddSetup.nameSurname.text
string = "\(nameSurname) \(checkIn)"

let boldUsername = NSMutableAttributedString(string: string!)
boldUsername.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
let normalCheckIn = NSMutableAttributedString(string: string!)
normalCheckIn.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
normalCheckIn.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))
print(string!)

postAddSetup.nameSurname.text = string!

我实际上有一个从 2 个字符串中获取文本的标签。我想用不同的颜色和字体显示那些字符串。它适用于 Playground,但不适用于 ViewController。有人可以帮忙吗?

【问题讨论】:

  • 这可能很明显,但是你确定在 View Controller 中这段代码已经被执行了吗?
  • 定义“不工作”。那是无用的描述。发布的代码究竟以何种方式不起作用?错误?崩溃?出乎意料的结果? Edit您的问题,以清楚地说明您的问题的具体细节。
  • MarianPetrisor:请考虑不要咬喂你的手。 @rmaddy 的评论绝不是粗鲁,只是要求澄清您当前的问题,如果在未来的问题中遵循,将导致更好更快的答案。请从这个角度看待它,这是一个积极的建议,如果您遵循,现在和以后都会对您有所帮助。
  • 请让我分享一下我刚来这里时得到的一些建议:让皮肤变厚。 cmets没有批评你,但要求澄清这个问题。与其抱怨他们,不如考虑提供所要求的信息。通过轻松帮助您来帮助回答志愿者。
  • 气垫船...你也对!我反应过度了:)谢谢!

标签: ios swift swift3 uilabel nsmutableattributedstring


【解决方案1】:

在您的示例中,您从相同的原始字符串创建了两个不同的属性字符串,并且您将没有属性的字符串传递给标签文本属性。 相反,您可以创建一个唯一的属性字符串,并将其与标签的属性属性一起使用:

var string = postAddSetup.nameSurname.text
    string = "\(nameSurname) \(checkIn)"

    let attributedString = NSMutableAttributedString(string: string!)
    attributedString.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
    attributedString.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
    attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))

    postAddSetup.nameSurname.attributedText = attributedString

【讨论】:

  • 你说得对,弗朗西斯科。这次真是万分感谢!这是我第一次使用属性文本并且知道我了解发生了什么。谢谢!
  • 不客气!很高兴为您提供帮助;)根据您的评论,我将编辑我的答案以提供更好的解释,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多