我有多个uitextfields设置,它们都与IBOutlets连接。我有一个密码的文本字段,我有“安全文本条目”#39;选择。当我有这个检查时,我得到了
为什么会这样?如果我取消选择安全条目,则文本字段会根据密码的大小而没有省略号。
知道为什么吗?它可能是宽度问题,因为它会自动调整大小。但是为什么“安全”文本输入会被输入'导致问题?
答案 0 :(得分:0)
我也遇到了同样的问题。我认为这是UITextfield的错误。它计算文本的大小,但不计算安全文本(点)的大小。当文本包含1,l等细长字符时,我遇到了问题。
作为解决方法,我将UITextfield类子类化,并覆盖了internalContentSize函数。您可能需要调整字母间距。我找不到如何根据字体动态获取它。
override var intrinsicContentSize: CGSize {
let size = super.intrinsicContentSize
if !self.isSecureTextEntry {
return size
}
var width = size.width
if let font = self.font,
let charCount = self.text?.count {
width = "•".size(withAttributes: [NSAttributedString.Key.font : font]).width * CGFloat(charCount)
width += (CGFloat(charCount)+1) * 4.5 // this magic number is for letter spacing
}
return CGSize(width: width, height: size.height)
}