0

Ich habe einige Attribute:Swift Ersatzschriftgröße in NSMutableAttributedString

var myAttributeMainText = [ NSFontAttributeName: UIFont(name: "Arial", size: 24.0)! ] 
var myAttributeUpperText = [ NSBaselineOffsetAttributeName: 8, NSFontAttributeName: UIFont(name: "Arial", size: 14.0)! ] 

Ich verwende diese Attribute in einem Textlabel

var allMurableAttributedString = NSMutableAttributedString(string: "") 
var userAttribute = NSMutableAttributedString(string: "USER", attributes: myAttributeMainText) 
var newAttribute = NSMutableAttributedString(string: "NEW", attributes: myAttributeUpperText) 
allMurableAttributedString.appendAttributedString(userAttribute) 
allMurableAttributedString.appendAttributedString(newAttribute) 

result

Dann diese Attribute ich hinzufüge in CoreData allMurableAttributedString und haben etwas wie dieses:

USER{ 
    NSFont = "<UICTFont: 0x79feec20> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 0.00pt"; 
} 

NEW{ 
    NSBaselineOffset = 6; 
    NSFont = "<UICTFont: 0x79fed8e0> font-family: \"Thonburi\"; font-weight: normal; font-style: normal; font-size: 10.00pt"; 
} 

Wie kann ich die Schriftgröße meines Attributs allMurableAttributedString ändern, wenn ich es anrufe?

+0

Haben Sie darüber nachgedacht, die gewünschten Schriftarten auf die richtigen Textbereiche wieder nur die Anwendung? Das heißt, eine neue attributierte Zeichenfolge zu erstellen, die nur den Text aus der ursprünglichen attributierten Zeichenfolge verwendet? In diesem Fall ist das möglicherweise einfacher als zu versuchen, Attribute zu entfernen und dann hinzuzufügen ... –

+0

Sie müssen den 'NSFontAttributeName' Ihres' NSMutableAttributedString' aufzählen und dann seinen Wert ändern, etwa so: http://stackoverflow.com/questions/36064762/change-font-size-ohne-ändern-uitextview-attributetext/36066082 # 36066082 – Larme

Antwort

0

Font-Einstellungen von NSMutableAttributedString entfernen ich diesen Code

gewohnt bin
allMurableAttributedString.removeAttribute(NSFontAttributeName, range: NSMakeRange(0, 7)) 

dann kann ich neue Attribute hinzufügen

allMurableAttributedString.setAttributes(myAttributeMainText, range: NSMakeRange(0, 4)) 
allMurableAttributedString.setAttributes(myAttributeUpperText, range: NSMakeRange(4, 3)) 
+0

Da Attribute in einem NSDictionary für jeden Bereich gespeichert sind, kann es nur einen Wert pro Schlüssel haben. Sie müssen also den Schlüssel/Wert "NSFontAttributeName" nicht entfernen, wenn Sie danach einen neuen Wert festlegen. – Larme