2015-04-02 2 views
6

Не думаю, что кто-то мог бы направить меня на правильный способ динамического размера UITextView при использовании Auto-Layout? С помощью Swift.Динамический размер UITextView на основе содержимого в 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

+1

прокручивается включен в UITextView? – Abdullah

+0

Да, но это не обязательно. –

+0

Отключить прокрутку и не ставить никаких других ограничений, которые могут определять высоту UITextView. Позвольте мне знать, что это работает. – Abdullah

ответ

32

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

1

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

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

+0

Я сделал * пучок * изменений, но я закончил, поэтому, пожалуйста, сканируйте, чтобы узнать, не изменилось ли что-то ценное для вас. – clearlight

+0

Во-первых, чтобы показать блоки кода в комментариях, просто используйте «обратный апостроф» до и после (не «код»). Например, 'mycode \' – clearlight

+0

У меня был плохой вопрос; не включил то, что я пробовал. Но, я пытался использовать первый метод, который вы упомянули. К сожалению, я не уверен, где найти размер контента? Я попытался, 'self.serviceDescriptionTextViewBottomGuide? .constant = self.whenToUseDescriptionTextView.contentSize.height' –

Смежные вопросы