2013-03-15 6 views
1

Я новичок в разработке iOS, и у меня возникли проблемы с автоматическим изменением размера UITextView.Изменение размера UITextView автоматически

Я создал приложение «Мастер-детализация». На моем DetailViewController.xib я добавил ScrollView, который включает в себя ярлык для названия, изображения и под этим изображением TextView, чтобы разместить описание, которое было опубликовано пользователем.
Проблема в том, что описание зависит от того, что возвращает мой WebService, поэтому мне нужно, чтобы он автоматически изменялся.

Вот мой код:

- (void)configureView 
{ 
    ... 
    self.detailDescriptionTextView.text = [self.detailItem valueForKey:@"adDescription"]; 

    CGRect frame = self.detailDescriptionTextView.frame; 
    frame.size.height = self.detailDescriptionTextView.contentSize.height; 
    self.detailDescriptionTextView.frame = frame; 
) 

Проблема заключается в том, что TextView получает содержимое правильно, но это не изменяет размер на всех .. Я искал ответ на какое-то время, и большинство из ответов есть то, что я ...

Благодарим за помощь.

EDIT: Я кое-что понял. Чтобы поместить некоторые элементы в описание, я поместил очень маленький TextView для описания в Interface Builder, это проблема? Если это так, как я могу поместить другие элементы в этот TextView, потому что больше нет места в Interface Builder?

EDIT 2: Я, наконец, преуспел. Похоже, проблема заключалась в том, что я создал TextView по интерфейсу Builder. Создавая его программно, он работал отлично. Вот мой код, если он может помочь кому-то:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 195, 280, 10)]; 
textView.text = [self.detailItem valueForKey:@"adDescription"]; 
textView.font = [UIFont fontWithName:@"Hevlatica" size:14]; 
[self.scrollView addSubview:textView]; 
CGRect descriptionFrame = textView.frame; 
descriptionFrame.size.height = textView.contentSize.height; 
textView.frame = descriptionFrame; 

Спасибо за помощь.

ответ

3

Сначала рассчитать высоту содержимого с помощью

NSString *content = @"Hello how are you."; 
CGSize size = [content sizeWithFont:[UIFont systemFontOfSize:14] 
       constrainedToSize:CGSizeMake(yourWidth, MAX_HEIGHT) 
        lineBreakMode:UILineBreakModeWordWrap]; 

, а затем установить рамку TextView

[self.textView setFrame:CGRectMake(5, 30, 100, size.height + 10)]; 

Или

Добавить содержимое в свой TextView, а затем попробовать это

CGRect frame = self.textView.frame; 
frame.size.height = self.textView.contentSize.height; 
self.textView.frame = frame; 

Надеюсь, что это поможет !!!

+0

Привет, Спасибо за ответ так быстро, но, к сожалению, она не работает :-( В первом решении, я пытался заменить содержание NSString * по NSString * содержание = [self.detailDescriptionTextView.text]; и попытался использовать 200 (для yourWidth) и 999 (для MAX_HEIGHT), это ничего не меняет. Второе решение такое же, как и я, если бы я понял, что вы имели в виду: S –

+0

Are self.detailDescriptionTextView.contentSize.height & self.detailDescriptionTextView.frame.size.height то же самое? –

+0

Я пробовал это: NSLog (@ "contentSize:% f", self.detailDescriptionTextView.contentSize.height); NSLog (@ "frame:% f", self .detailDescriptionTextView.frame.size.height); Первый журнал возвращает 178.000000, а второй 178.000000 тоже –

1
CGSize constraint = CGSizeMake(690.0, 2000.0); 
int h=10; 
CGSize size_txt_overview1 = [[self.detailItem valueForKey:@"adDescription"] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
frame.size.height = size_txt_overview1.height; 
self.detailDescriptionTextView.frame = frame; 
Смежные вопросы