Swift 自定义文本字段
我正在尝试建立一个科学计算器应用程序。然而,这个简单的标签不适合我的需要,因为它不能显示像整数或分数这样的符号。所以我想开发自己的自定义标签类 我已经尝试过使用核心图形绘制数字和符号,但我真的不知道如何绘制闪烁的光标。你对我的问题有什么建议吗,或者我应该使用不同于CG的东西吗?致以最良好的祝愿Swift 自定义文本字段,swift,label,core-graphics,Swift,Label,Core Graphics,我正在尝试建立一个科学计算器应用程序。然而,这个简单的标签不适合我的需要,因为它不能显示像整数或分数这样的符号。所以我想开发自己的自定义标签类 我已经尝试过使用核心图形绘制数字和符号,但我真的不知道如何绘制闪烁的光标。你对我的问题有什么建议吗,或者我应该使用不同于CG的东西吗?致以最良好的祝愿 func drawText(text: String) { let renderer = UIGraphicsImageRenderer(size: CGSize(width: 343,
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}"
您还可以通过简单的谷歌搜索找到所有其他字符的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所建议的),只需转到“编辑菜单->表情符号”即可获得所需的符号。直接使用字符,而不必使用难以阅读的
“\u{222B}”
<代码>”∫"。我想我们在mac键盘上没有这个符号。但是正如你所说,我们可以从互联网上复制它。不需要从互联网上复制它。在任何macOS程序中,单击“编辑”菜单并选择“表情符号和符号”。现在你可以在代码中找到并使用任何Unicode字符。哦,太好了,谢谢。我将把这个添加到答案中。