【问题标题】:Trim first character in NSMutableAttributedString修剪 NSMutableAttributedString 中的第一个字符
【发布时间】:2014-10-15 12:46:24
【问题描述】:

我正在使用 NSMutableAttributedString 在标签中显示属性字符串。有没有办法在不改变属性的情况下修剪 NSMutableAttributedString 的第一个字符。

【问题讨论】:

    标签: ios objective-c nsmutableattributedstring


    【解决方案1】:

    不可以,因为属性的一个属性是它们影响的字符串的范围,如果字符串长度发生变化,这些将变得无效。

    最好的方法是从头开始重建属性字符串,这可能是简单的还是困难的,这取决于您是否知道要添加的属性。

    【讨论】:

    • 感谢您的解决方案。
    • 实际上NSMutableAttributedString 支持deleteCharacters(in:NSRange) 并且在保留文本属性方面的行为与您预期的一样。看我的回答。
    【解决方案2】:

    NSMutableAttributedString 支持deleteCharacters(in:NSRange) 方法:

    @IBOutlet weak var topLabel: NSTextField!
    @IBOutlet weak var bottomLabel: NSTextField!
    ...
        let textAttributes : [String : Any] = [
            NSForegroundColorAttributeName : NSColor.blue,
            NSFontAttributeName : NSFont(name: "Menlo", size: 12.0)!
        ]
        let text = NSMutableAttributedString(string: "ABCDEF",
                                             attributes: textAttributes)
        topLabel.attributedStringValue = text
        text.deleteCharacters(in: NSMakeRange(0,1))
        bottomLabel.attributedStringValue = text
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多