Как получить контент Высота динамически изменяемого текста в текстовом представлении? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть динамически изменяемый текст в TextView. Я не смог получить содержимое Высота TextView.

Вот что я пробовал.

let height = self.tvComment.contentSize.height
print("height",height)

let contentSizeComment = self.tvComment.sizeThatFits(self.tvComment.bounds.size)
print("height",contentSizeComment)

Почему не получается высота содержимого TextView?Надеюсь, вы понимаете мою проблему.Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

в textdidchange вы можете использовать этот код, чтобы изменить размер, когда textchange

//approxi should be the width of your textview
           let approxi = view.frame.width - 90
//size is the max width and height of textview,1000 can be what ever you want
            let size = CGSize(width: approxi, height: 1000)


   //dont forget to put your font and size
//chey is the text of thetext view
                let attributes = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15)]
                let estim = NSString(string: chey).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)

// estim is height

над ним первый метод, второй метод придет в edit secondметод

    func pva()  {
//what was the name of my textfield
            let fixedwidth = what.frame.size.width - 40
            let newsize = what.contentSize.height
            self.hrightext.constant = newsize
            self.view.layoutIfNeeded()

        }

примечание: оба проверены и работают в swift4

0 голосов
/ 25 июня 2018

Вы просто напишите код ниже делегата UITextView: -

func textViewDidChange(_ textView: UITextView!) {

    let height = self.tvComment.contentSize.height
    print("height",height)

    let contentSizeComment = self.tvComment.sizeThatFits(self.tvComment.bounds.size)
    print("height",contentSizeComment)
}

Я надеюсь, это поможет вам,

Спасибо.

0 голосов
/ 25 июня 2018

Используйте этот метод для получения высоты -

func heightForString(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text
    label.sizeToFit()

    return label.frame.size.height
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...