2014-10-15 2 views
2

Я использую NSMutableAttributedString для отображения атрибутной строки в метке. Есть ли способ обрезать первый символ NSMutableAttributedString без изменения атрибутов.Trim first character в NSMutableAttributedString

ответ

3

Нет, потому что один из атрибутов атрибутов - это диапазон строки, в которой они действуют, и те становятся недопустимыми, если длина строки изменяется.

Лучшим подходом было бы восстановить приписанную строку с нуля, которая может быть простой или сложной, в зависимости от того, знаете ли вы, какие атрибуты нужно добавить.

+0

Спасибо за ваше решение. – Arun

+0

Фактически 'NSMutableAttributedString' поддерживает' deleteCharacters (in: NSRange) 'и ведет себя так, как вы могли бы ожидать в плане сохранения текстовых атрибутов. См. Мой ответ. – wcochran

0

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 
... 
Смежные вопросы