自定义文本域

Custom TextField

我正在尝试构建一个科学计算器应用程序。但是,简单的标签不符合我的需要,因为它不能显示符号,例如积分或分数。所以我想开发自己的自定义标签class.

我已经尝试使用 Core Graphics 绘制数字和符号,但我真的不知道如何绘制闪烁的 Cursor。你对我的问题有什么建议吗,或者我应该使用不同于 CG 的东西吗?此致!

func drawText(text: String) {
        let renderer = UIGraphicsImageRenderer(size: CGSize(width: 343, height: 306))
        let image = renderer.image { ctx in
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.alignment = .left
            let attrs = [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Thin", size: 36)!, NSAttributedString.Key.paragraphStyle: paragraphStyle]
            text.draw(with: CGRect(x: 0, y: 0, width: 343, height: 306), options: .usesLineFragmentOrigin, attributes: attrs, context: nil)
        }
        imageView.image = image
    }

func drawCursor() {
        // Don't know how to continue here
}

你可以只使用unicode符号来表示积分之类的东西,下面是绘制积分符号的代码。

let textField = UITextField()
textField.text = "\u{222B}"

您还可以通过简单的 google 搜索找到所有其他字符的 unicode。

关于绘图光标,您可以使用定时器来实现闪烁效果。下面是可能会帮助您获得一些逻辑的代码,

let textField = UITextField()
let text = "SomeText"
var count = 0
let timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { (_) in
    var displayText = ""
    if count % 2 == 0 {
        displayText = "\(text)|"
    } else {
        displayText = text
    }

    textField.text = displayText
    print(textField.text ?? "")

    count += 1
} 

如果要在文本中间显示光标,需要跟踪它的位置并将其插入中间。

编辑:- 与其在 Internet 上搜索 unicode,(如 @rmaddy 所建议的),您可以转到“编辑”菜单 ->“表情符号和符号”并获取您想要的符号。