2016-11-08 12 views
0

Нужна помощь. Я создаю приложение чата и хочу, чтобы текстовый текст чата настраивался с шириной текста, поэтому, если сообщение короткое, TextView настраивается соответствующим образом. Я использую autolayout, но не могу понять, как динамически настраивать константу ограничения на основе длины текстовой строки textView. Благодарю.UITextView Динамическая ширина с текстом iOS

Как у меня сейчас:

enter image description here

Ограничения:

enter image description here

+0

Вы используете UITableViewAutomaticDimension –

+0

Да, но, по-видимому, только позаботится о высоте ячейки – dcotter

ответ

0

enter image description here

плз помните шаги

1 зафиксировать ширину этикетки установить его отношение к больше или равно> 0

2 возьмите привязку к завершающему ограничению, установив ее отношение больше или равно> 0

+0

Спасибо, балкаран. Используя метку с привязкой к трейлингу, установленную в> = 0, закончили делать трюк – dcotter

+0

welcome @dcotter :) –

0

вы можете удалить отставая пространство для SuperView, чтобы получить ширину от текста длиной вы можете попробовать?

+0

, если я удаляю конечное пространство, чтобы наблюдать за тем, чтобы текстовое изображение расширялось за пределы представления, когда текст длинный. – dcotter

1

Программным вы можете сделать, как,

Objective C

- (void)textViewDidChange:(UITextView *)textView { 
    CGFloat fixedWidth = textView.frame.size.width; 
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 
    CGRect newFrame = textView.frame; 
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); 
    textView.frame = newFrame; 
} 

Swift

let fixedWidth = textView.frame.size.width 
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
var newFrame = textView.frame 
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) 
textView.frame = newFrame; 
+0

Это не работает. Может быть, мое ограничение переопределяет это? – dcotter

+0

Удалите это противопоставление, затем попробуйте это. – User511

+0

Спасибо за помощь Айша. Я удалил его, и это просто заставило его расширить свое мнение. Но я переключил его на лейбл и с помощью некоторых других ответов заставил его работать. – dcotter

1

Вместо UITextView сделать заказ UILable класс и набор Constraint, как я показываю в follwing изображение.

enter image description here

+0

Спасибо, chetu. Вы ведете меня по правильному пути. Использование метки является правильным выбором. – dcotter

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

  • Нет связанных вопросов^_^