2017-11-21 7 views
2

I-Code habe die Geschichte in dem Rechner anzuzeigen, aber die Zeichen (+, -, ×, ÷) aus dem "Fall" genommen (Foto 1)Bilder in dem Etikett (Swift)

Wie kann ich es so in der Geschichte, dass die Zeichen (+, -, ×, ÷) durch die Bilder angezeigt werden, ich eingestellt haben (Foto 2)

**Photo 1**

**Photo 2**

@IBAction func equalitySignPressed(sender: UIButton) { 
    if stillTyping { 
     secondOperand = currentInput 
    } 
    dotIsPlaced = false 

     addHistory(text: operationSign + displayResultLabel.text!) 

    switch operationSign { 

    case "+": 
     operateWithTwoOperands{$0 + $1} 
    case "-": 
     operateWithTwoOperands{$0 - $1} 
    case "×": 
     operateWithTwoOperands{$0 * $1} 
    case "÷": 
     operateWithTwoOperands{$0/$1} 
    default: break 
    } 
} 

Geschichte:

func addHistory(text: String){ 
    //Add text 
    resultLabelText.text = resultLabelText.text! + "" + text 
} 

Antwort

1

Sie können Ihre Symbolbilder erstellen und NSTextAttachment verwenden, um einen NSAttributedAtring zu erstellen, der den Text in Ihrer Zeichenfolge durch das entsprechende NSTextAttachment mit Ihrem Symbolbild ersetzt. Hier ist ein Beispielspielplatz, der es mit einem Bild macht, aber Sie können leicht dem Wörterbuch weitere Bilder hinzufügen, um alle anderen Symbole durch Bilder zu ersetzen:

import PlaygroundSupport 
import UIKit 

class V: UIViewController { 
    let label = UILabel() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.addSubview(label) 
     label.textColor = .red 

    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     let expression = "5 + 5" 
     let plusAttachment = NSTextAttachment() 
     plusAttachment.image = UIImage(named: "star.png") 
     let plusString = NSAttributedString(attachment: plusAttachment) 
     let substitutions: [Character: NSAttributedString] = ["+": plusString] 
     let attributedExpression = NSMutableAttributedString() 
     for character in expression { 
      if let substitution = substitutions[character] { 
       attributedExpression.append(substitution) 
      } else { 
       attributedExpression.append(NSAttributedString(string: String(character))) 
      } 
     } 
     label.attributedText = attributedExpression 
     label.sizeToFit() 

    } 
} 

PlaygroundPage.current.liveView = V() 
0

Ich schlage vor, Sie einen Emoji Schriftart erhalten, die um sie mathematische Zeichen mit einer Grenze zeigt. Verwenden Sie diese Schriftart, um NSAttributedString s zu erstellen, und legen Sie sie als attributedText des Labels fest.

Wie Sie benutzerdefinierte Schriftarten verwenden, können Sie auf here oder nur auf SO suchen. Es gibt viele Fragen zu diesem Thema.

Ich sehe auch, dass Sie wollen, dass der Text fett, das kann auch mit attributierten Strings getan werden.

Alternativ können Sie diese coolen mathematischen Zeichen als Anhänge zu NSAttributedString s hinzufügen, aber ich bezweifle, dass es einfach ist, die Größen richtig zu bekommen.