我有代码在计算器中显示历史记录,但符号(+, - ,×,÷)取自“案例”( 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
}
}
历史:
func addHistory(text: String){
//Add text
resultLabelText.text = resultLabelText.text! + "" + text
}
答案 0 :(得分:1)
您可以制作符号图像并使用NSTextAttachment构建NSAttributedAtring,用您的符号图像替换字符串中的文本和相应的NSTextAttachment。这是一个带有一个图像的示例游乐场,但您可以轻松地将更多图像添加到字典中,以用图像替换所有其他符号:
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()
答案 1 :(得分:0)
我建议您使用表情符号字体显示带有边框的数学符号。使用该字体创建NSAttributedString
并将其设置为标签attributedText
。
关于如何使用自定义字体,您可以参考here或只搜索SO。关于这个主题有很多问题。
我也看到你希望文本是粗体的,也可以使用属性字符串来完成。
或者,您可以将这些很酷的数学符号添加为NSAttributedString
的附件,但我怀疑这些大小是否正确很容易。