自定义文本域
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 所建议的),您可以转到“编辑”菜单 ->“表情符号和符号”并获取您想要的符号。
我正在尝试构建一个科学计算器应用程序。但是,简单的标签不符合我的需要,因为它不能显示符号,例如积分或分数。所以我想开发自己的自定义标签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 所建议的),您可以转到“编辑”菜单 ->“表情符号和符号”并获取您想要的符号。