Как получить высоту динамически создаваемого UITextView iphone - PullRequest
2 голосов
/ 07 июня 2011

Я пытаюсь создать таблицу с ячейками, которые содержат UITextViews внутри них для переменного количества текста. Мне нужно указать высоту каждой ячейки, чтобы соответствовать размеру содержимого текстовых представлений. Я использую ...

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

    UITextView *historyNode = [[[UITextView alloc]init]autorelease];
    historyNode.text = (@"%@",[globalArrayWithStrings objectAtIndex:[indexPath row]]);
    NSLog(@"%2.0f",historyNode.frame.size.height);
    return historyNode.contentSize.height;
}

По какой-то причине он всегда печатает 0. Если я печатаю высоту текстового представления, созданного в конструкторе интерфейса, он печатает правильное значение. Любые идеи, как обойти это или почему я не могу получить размер текстового представления, пока оно не добавлено в представление.

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

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

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

    NSString *text = [globalArrayWithStrings objectAtIndex:[indexPath row]];
    CGSize maxSize = CGSizeMake(textViewWidth, 999); // 999 can be any maxmimum height you want
    CGSize newSize = [text sizeWithFont:aFont constrainedToSize:maxSize lineBreakMode:textViewLineBreakMode];
    return newSize.height;
}
0 голосов
/ 07 июня 2011

Сначала установите фрейм uitextView, а затем вы получите высоту текстового представления.

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