2017-11-13 2 views
0

Ich habe eine NSMutableAttributedString mit einem + im ersten Zeichen, das ich 2 Punkte heben möchte.Einstellen der vertikalen Höhe eines Zeichens in einem NSMutableAttributedString

kann ich mit diesem Kern: attributedAmountText.addAttribute(NSKernAttributeName, value: 2.0, range: NSRange(location: 0, length: 1))

Gibt es eine Möglichkeit, dass die ersten Zeichen zu heben? So ähnlich wie eine vertikale kern

Edit:

Der Versuch attributedAmountText.addAttribute(NSBaselineOffsetAttributeName, value: 2.0, range: NSRange(location: 0, length: 1)) bewegt sich tatsächlich die Basislinie selbst, anstatt den Text vertikal von der Basislinie, die da die docs sonst merkwürdig erscheint sagen:

Der Wert dieser Attribut ist ein NSNumber-Objekt, das einen Fließkommawert enthält, der den Offset des Zeichens von der Grundlinie in Punkten angibt. Der Standardwert ist 0.

+0

Werfen Sie einen Blick auf 'NSBaselineOffsetAttributeName' – DonMag

+0

Ich tat. Dieses Attribut scheint die Baseline selbst zu verschieben, obwohl die Dokumentation etwas anderes sagt. –

Antwort

0

Hmmm ... Ein schneller Test dieses Codes:

class ScalingViewController: UIViewController { 

    @IBOutlet weak var theLabel: UILabel! 

    @IBOutlet weak var theOtherLabel: UILabel! 

    let now = Date() 

    let labelA: UILabel = { 
     let v = UILabel() 
     v.translatesAutoresizingMaskIntoConstraints = false 
     v.backgroundColor = UIColor.cyan 
     return v 
    }() 

    let labelB: UILabel = { 
     let v = UILabel() 
     v.translatesAutoresizingMaskIntoConstraints = false 
     v.backgroundColor = UIColor.yellow 
     return v 
    }() 

    let labelC: UILabel = { 
     let v = UILabel() 
     v.translatesAutoresizingMaskIntoConstraints = false 
     v.backgroundColor = UIColor.green 
     return v 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.addSubview(labelA) 
     view.addSubview(labelB) 
     view.addSubview(labelC) 

     labelA.topAnchor.constraint(equalTo: view.topAnchor, constant: 40.0).isActive = true 
     labelA.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8.0).isActive = true 

     labelB.topAnchor.constraint(equalTo: labelA.topAnchor, constant: 0.0).isActive = true 
     labelB.leadingAnchor.constraint(equalTo: labelA.trailingAnchor, constant: 8.0).isActive = true 

     labelC.topAnchor.constraint(equalTo: labelA.topAnchor, constant: 0.0).isActive = true 
     labelC.leadingAnchor.constraint(equalTo: labelB.trailingAnchor, constant: 8.0).isActive = true 

     var aText = NSMutableAttributedString() 
     let baseFont = UIFont.systemFont(ofSize: 30.0, weight: UIFontWeightLight) 


     let testString = "Example" 
     let tsLength = testString.characters.count 


     // Font only 
     aText = NSMutableAttributedString() 
     aText.append(NSMutableAttributedString(string: testString, attributes: [NSFontAttributeName: baseFont])) 

     labelA.attributedText = aText 


     // Font + positive Baseline Offset of 1st character 
     aText = NSMutableAttributedString() 
     aText.append(NSMutableAttributedString(string: testString, attributes: [NSFontAttributeName: baseFont])) 
     aText.addAttribute(NSBaselineOffsetAttributeName, value: 10.0, range: NSRange(location: 0, length: 1)) 

     labelB.attributedText = aText 


     // Font + negative Baseline Offset of all but 1st character 
     aText = NSMutableAttributedString() 
     aText.append(NSMutableAttributedString(string: testString, attributes: [NSFontAttributeName: baseFont])) 
     aText.addAttribute(NSBaselineOffsetAttributeName, value: -10.0, range: NSRange(location: 1, length: tsLength - 1)) 

     labelC.attributedText = aText 

    } 

} 

Gab mir dieses Ergebnis:

enter image description here

Ich nehme an, wenn ich genug wusste, Über alle typografischen Aspekte von String-Attributen wäre das sinnvoll?

+0

Danke DonMag. Der Text ist einfach, es ist '+ $ 5.50' oder etwas Geldbetrag und ich möchte die '+' um 2 Punkte erhöhen. –

+0

Ich denke, das 3. Beispiel sollte funktionieren, für das, was ich will –

Verwandte Themen