UITextView динамическое изменение размера текстового поля / ячейки - PullRequest
2 голосов
/ 05 декабря 2011

Я загружаю свой UITextView из XML-канала, поэтому текст постоянно меняется. Я пытаюсь выполнить следующие действия, чтобы изменить размер ячейки и текста, и он изменяет размеры ячейки, но не текстового представления, он просто не отображает текстовое представление, а иногда просто его часть.

Любые советы по правильному пути будут действительно оценены;

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    AssessObject *newObj1;
    newObj1=[totalArray objectAtIndex:indexPath.row];

    NSString *cellText = newObj1.routeText;

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:16.0];
    CGSize constraintSize = CGSizeMake(188.0, CGFLOAT_MAX);
    CGSize textViewSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];


    return textViewSize.height + 200;


}

Ответы [ 4 ]

3 голосов
/ 05 декабря 2011

Проверьте AutoresizingMask для UITextView, который вы добавили в свою ячейку.

Убедитесь, что он установлен так, что он изменяет размеры с ячейкой (вы можете сделать это либо в IB, либо с помощью кода, используя UIViewAutoresizingMaskFlexibleWidth|UIViewAutoresizingMaskFlexibleWidth значение)

1 голос
/ 05 декабря 2011

Установите размер textView равным textSize textView.Примерно так:

CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.contentSize.height);

Я делаю высоту textView равной высоте его contentView.

0 голосов
/ 01 июня 2012

Я использовал идею Бруно, чтобы изменить размер моего TextView в соответствии с объемом текста, когда я поместил его в ScrollView. Вот как я это делаю. Там куча констант, которые вы не можете использовать. Важно изменить размер textView после добавления его в ScrollView.

    // Programmatic creation of scroll view layout 
NSString *text = @"Your text";
CGFloat textOffSetInColumn = 10;
CGFloat infoTextWidth = 196;
CGFloat infoOffsetVertical = 36;
CGFloat initialTextHeight = 50;

// Create textView with initial height
CGRect infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, initialTextHeight);
infoTextView = [[UITextView alloc] initWithFrame:infoTextFrame];
infoTextView.text = text;
[scrollView addSubview:infoTextView];

// Resize textView
CGFloat infoTextHeight = infoTextView.contentSize.height;
infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, infoTextHeight);
infoTextView.frame = infoTextFrame;

Если вы хотите изменить размер TextView и отцентрировать его к предыдущему центру, вы можете использовать этот код:

   // Changing size of TextView and centering
    CGPoint center = self.categoryTextView.center;
    self.categoryTextView.frame = CGRectMake(_categoryTextView.frame.origin.x, _categoryTextView.frame.origin.y, _categoryTextView.frame.size.width, _categoryTextView.contentSize.height);
    self.categoryTextView.center = center;

Вместо categoryTextView используйте свое собственное имя розетки.

0 голосов
/ 05 декабря 2011

установите размер шрифта, текстовое содержимое и прямоугольник UITextView, затем [UITextView sizeToFit], чтобы вычислить contentSize UITextView, а затем рассчитайте высоту строки с размером contentSize.

Незабудьте изменить размер прямоугольника UITextView;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...