Mik*_*ens 7 uitextfield ios autolayout
我有多个 uitextfields 设置,它们都与 IBOutlets 连接。我有一个作为密码的文本字段,并且我选择了“安全文本条目”。当我收到这张支票时,我得到了这个
任何想法为什么会发生这种情况?如果我取消选择受保护的条目,则文本字段会根据密码的大小而正常上升,没有省略号。
知道为什么吗?这可能是宽度问题,因为它会自动调整大小。但为什么“安全文本输入”会导致问题?
我也遇到过同样的问题。我认为这是 UITextfield 的一个错误。它计算文本的大小,但不计算安全文本(点)的大小。当文本包含 1、l 等细长字符时,我遇到问题...
\n\n作为解决方法,我对 UITextfield 类进行了子类化,并重写了 irreinitiveContentSize 函数。您可能需要调整字母间距。我找不到如何根据字体动态获取它。
\n\noverride var intrinsicContentSize: CGSize {\n\n let size = super.intrinsicContentSize\n if !self.isSecureTextEntry {\n return size\n }\n\n var width = size.width\n if let font = self.font,\n let charCount = self.text?.count {\n width = "\xe2\x80\xa2".size(withAttributes: [NSAttributedString.Key.font : font]).width * CGFloat(charCount)\n width += (CGFloat(charCount)+1) * 4.5 // this magic number is for letter spacing\n }\n return CGSize(width: width, height: size.height)\n}\nRun Code Online (Sandbox Code Playgroud)\n