我喜欢设置NSTextField中显示的文本的最大长度,以便截断长文本并以两个点(..)结束。
问题是不同语言的长度不同,即使它们的字符数相同
例如,让myTitle1 =" Lake" // 4英文字符
让myTitle2 ="我的标题" // 4个汉字
让myTitle3 ="一个美丽的湖泊" // 16个英文字符
我喜欢上面三个标题显示在NSTestField中具有相似(如果不完全相同)的长度,如下所示:
"湖"
"我的.."
" A be .."
有没有办法做到这一点?
感谢
答案 0 :(得分:0)
这有点晚了,但对于任何寻求应答者的人而言。您不应该手动截断文本,让操作系统为您完成。
根据需要在情节提要中对齐文本字段,并设置换行符以截断尾巴。
还应将文本字段的压缩阻力设置为较低的值,否则文本字段的边框将被压入而不是被截断的文本。
答案 1 :(得分:-1)
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
if(textField == myTitle1){
return newLength <= 4
}else if(textField == myTitle2){
return newLength <= 4
}else{
return newLength <= 16
}
return true // Bool
}