Swift - изменение высоты и ширины TextView при наборе текста - PullRequest
0 голосов
/ 11 мая 2019

Я хочу изменить размер текста при наборе текста, но с помощью этих кодов я не изменил ширину.Каждый раз, когда я получаю размер textView как 200. В чем ошибка?Пожалуйста, помогите мне.

Заранее спасибо

let textViewX = UITextView(frame: CGRect(x: self.view.frame.width / 2 - 100, y: self.view.frame.height / 2 - 25, width: 200, height: 50))
textViewX.isScrollEnabled = false
textViewX.clipsToBounds = false
textViewX.delegate = self
textViewX.font = UIFont.systemFont(ofSize: 25)
self.view.addSubview(textViewX)


func textViewDidChange(_ textView: UITextView) {
    let fixedWidth = textView.frame.size.width
    let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    textView.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
}

1 Ответ

1 голос
/ 11 мая 2019

Ваша проблема в том, что вы говорите newSize, что он не может быть шире fixedWidth, используя метод sizeThatFits(:).Если вы измените свой код, чтобы увеличить ширину, ваш textView будет расти горизонтально:

let fixedHeight = textView.frame.size.height
let newSize = textView.sizeThatFits(CGSize(width: CGFloat.greatestFiniteMagnitude, height: fixedHeight))
textView.frame.size = newSize

Это позволяет рамке textView расти только горизонтально.Чтобы разрешить и то, и другое, вы можете попробовать что-то вроде этого:

let maxWidth = UIScreen.main.bounds.width - 20
let maxHeight = UIScreen.main.bounds.height - 20
let newSize = textView.sizeThatFits(CGSize(width: maxWidth, height: maxHeight))
textView.frame.size = newSize
textView.center = view.center

Это позволяет рамке расти вертикально и горизонтально, сохраняя textView по центру в родительском представлении и ограничивая размер textView размером с экран (с20 пт за границей).

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