我一直在查看 UITextField 的文档,它的选项比 UITextView 更有限。
我遇到过这样一种情况,我需要通过强制边界框变大来处理截断文本,这样就不会出现截断。
我不能只使用 .adjustsFontSizeToFitWidth
因为只有当文本框处于屏幕宽度时才允许此事件。当它不是全屏长度时,就会发生截断。
现在,当用户键入时,我会记录每次击键并确保 UITextFields 框展开以适合文本。但是,如果我使用大字体,文本仍然会被截断:
"THIS IS LARGE TEXT GETTING CUT O..."
目前我记录每个击键并运行此代码来调整它的大小:
func adjustFrameWidthToFitText()
{
var size = sizeThatFits(CGSizeMake(CGFloat.max,height))
frame = CGRectMake(frame.origin.x, frame.origin.y, size.width + 7, frame.height)
}
但是我仍然在某些地方...被切断了。有没有办法判断文本是否被截断并覆盖导致所述截断的行为?
(欢迎使用 Swift 和 Obj-c 解决方案!)
根据我尝试过的以下答案:
func adjustFrameWidthToFitText()
{
var fontSize = font.pointSize
var atr = [NSFontAttributeName:font]
var textSize = NSString(string: text).sizeWithAttributes(atr)
frame = CGRectMake(frame.origin.x, frame.origin.y, textSize.width, frame.height)
}
但还是有截断
最佳答案
extension String {
func sizeWithAttributes(atr: NSDictionary) -> CGSize {
return NSString(string: self).sizeWithAttributes(atr)
}
}
let size = textView.text.sizeWithAttributes([NSFontAttribute:textView.font])
这将返回包含“\n”字符的字符串的准确大小。
您可以根据需要使用大小。
已添加
此外,当我使用 CATextLayer 时,我必须将其添加到属性中以获取行,但尚未在 UITextView 或字段上进行测试:
let style = NSMutableParagraphStyle()
style.lineHeightMultiple = 1.05
..., NSParagraphStyleAttributeName:style])
关于ios - 禁用 "..."截断 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28032340/