Динамический размер UITextView на основе содержимого в Swift

Я не думаю, что кто-то может направить меня на правильный путь к динамическому размеру UITextView, все еще используя Auto-Layout? То есть с помощью Swift.

Я попытался программно настроить нижние ограничения, пытаясь заставить UITextView обнимать содержимое. Но я не уверен, как получить высоту содержимого UITextView?

Я пытаюсь загрузить данные в поля UITextView, а затем динамически настроить их для просмотра аккуратный.

@IBOutlet weak var serviceDescriptionTextViewBottomGuide: NSLayoutConstraint! 

override func viewDidLoad() {

        self.activityName.text = serviceCodes[selectionValue]
        self.serviceDescriptionTextView.text = serviceDescription[selectionValue]
        self.whenToUseDescriptionTextView.text = whenToUseCode[selectionValue]

        self.serviceDescriptionTextViewBottomGuide?.constant += x
    }

enter image description here

3 ответов


отключите прокрутку и не ставьте никаких других ограничений, которые могут диктовать высоту UITextView.


это правильно, но мне также пришлось написать:

override func viewDidLoad() {  
    super.viewDidLoad()

    tableView.estimatedRowHeight = 44.0 // Replace with your actual estimation
    // Automatic dimensions to tell the table view to use dynamic height
    tableView.rowHeight = UITableViewAutomaticDimension
}

Посмотреть подробнее:

https://pontifex.azurewebsites.net/self-sizing-uitableviewcell-with-uitextview-in-ios-8/


вы можете создать IBOutlet для любого ограничения, которое вы хотите изменить программно. Далее меняем ограничение через NSLayoutConstraint это constant собственность в код через outletted ссылка. Это работает довольно хорошо. Вы можете изменить ширину, высоту и положение таким образом. Нельзя изменить NSLayoutConstraint это multiplier собственность, хотя (это только для чтения). Но это не имеет значения, потому что то, что вы могли бы выполнить, определив свойство множителя ограничения в интерфейсе Builder (чтобы получить пропорциональное значение), вы можете альтернативно выполнить, выполнив математику в своем коде и изменив constant собственность.

альтернативный подход, можно отключить изменение размеров перевод маска (электронная.г.элемент UIView translatesAutoresizingMaskIntoConstraints свойство имеет значение nil) и создавать ограничения с нуля программными средствами, для которых рекомендуемый подход (более простой в использовании) называется визуальный формат. Но создание ограничений полностью программно-это больше работы чем с помощью Interface Builder Autolayout создавать черновик ваших представлений, а затем программно настраивать ограничения выбора после факта, по крайней мере, в типичных простых случаях.