ios - 禁用 "..."截断 UITextField

标签 ios objective-c swift uitextfield

我一直在查看 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/

相关文章:

objective-c - 格式数字字符串,到许多尾随/数字/零

ios - 按下后退按钮,当我将 View Controller 从堆栈中弹出时丢失我的自定义 UIToolBar

ios - 对成员 'first(where)' 的模糊引用

ios - 在 ViewController 之间传递数据可以正常工作,但不能与 Tab Bar Controller 一起传递

iphone - TestFlight 不报告崩溃

android - 为什么 Telegram 不打开 Instagram URI 链接?

ios - 未调用 UIAlertView 子类中的 alertViewShouldEnableFirstOtherButton

ios - 在 Xcode 中创建带有 slider 的倒计时表

ios - iOS VoIP 推送有效负载与静默通知的有效负载相似吗?

iphone - 如何在 UISearchBar 中关闭实时搜索