2013-02-23 2 views
0

Вот код UITextView, который я хочу изменить до высоты его содержимого.Размер UITextView для его содержимого не работает

Если я пишу textView.frame высоту явно нравится:

textView.frame = CGRectMake(100, 12, 320, 458); 

размеры TextView на его содержание, как и ожидалось.

Если, однако, я пишу это следующим образом. Он даже не показывать, хотя заявление NSLog говорит, что есть значение textView.contentSize.height

UITextView *textView = [[UITextView alloc] init]; 
textView.layer.borderWidth = 5.0f; 

textView.layer.borderColor = [[UIColor redColor] CGColor]; 

textView.text = [item objectForKey:@"description"]; 

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height); 


NSLog(@"%f textviewcontnet size", textView.contentSize.height); 

textView.editable = NO; 

[self.view addSubview:textView]; 

Когда я вхожу вывод:

NSLog(@"%f textviewcontent size", textView.contentSize.height); 

я получаю «размер 458,000000 textviewcontent»

спасибо за любую помощь

+0

Вы используете автоматическую компоновку? Если это так, ограничения могут быть повторно применены, и ваш 'UITextView' будет изменен на прежний размер. – Rob

+0

@ Rob я. у вас есть пример? uitextview закодирован и не добавлен в раскадровку, хотя – hanumanDev

ответ

1

Я бы предложил попробовать:

UITextView *textView = [[UITextView alloc] init]; 
textView.layer.borderWidth = 5.0f; 
textView.layer.borderColor = [[UIColor redColor] CGColor]; 
textView.text = [item objectForKey:@"description"]; 
textView.frame = CGRectMake(100, 12, 320, 458);  
textView.editable = NO; 

[self.view addSubview:textView]; 

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height);  

Я слышал, что textView.contentSize.height не работает до тех пор, пока не было добавлено к виду (хотя это не мой опыт). Что еще более важно, я не знаю, как это интерпретирует textView.contentSize.height, если он еще не знает, что такое ширина элемента управления. Итак, вперед, установите начальный frame, сделайте addSubview, а затем скорректируйте размер, основанный на textView.contentSize.height.

0

Быстрое копирование из одного из моих проектов:

AppDelegate *appDelegate; 

CGSize textSize1, textSize2; 

appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 

textSize1 = [self.subjectLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping]; 
self.subjectLabel.frame = CGRectMake(10, 5, 300, textSize1.height); 
textSize2 = [self.descriptionLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping]; 
self.descriptionLabel.frame = CGRectMake(10, 5 + textSize1.height + 5, 300, textSize2.height); 

[appDelegate fontNormal] просто возвращает объект UIFont, тот, который я использую для всех «нормальных» текстовых элементов. Не беспокойтесь об этом слишком много. Но важно, чтобы вы использовали тот же шрифт, который также используется для текстового представления.

Мой пример немного проще, потому что это UILable. Это также работает с текстовым представлением, но вам придется рассмотреть насекомых. Простое решение, просто вычтите «нечеткое смещение» по ширине по сравнению с шириной рамки вашего текстового вида.

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