2013-12-04 6 views
9

У меня есть UITableView, каждый tableViewCell является обычным. Внутри моего customTableViewCell есть UITextView, кадр TextViews является штырем или таким же, как его superView, который является tableViewCell. enter image description hereКак настроить динамическую высоту UITextView внутри пользовательского UITableViewCell с автозапуском

Как я могу установить высоту UITableViewCell динамически, пропорциональную размеру TextViews, которая также будет зависеть от текста контента, который я получаю из Интернета.

(образец прототипа)

enter image description here

// это как я манипулировать каждую высоту ячейки

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    // How do I set the height here, whats the best approach for this. with autolayout BTW 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
// I initialize every cell here with my ArrayContainer, nothing much to refer here. 
} 
+0

Возможный дубликат [Использование автоматической компоновки в UITableView для динамических раскладок и высот ячеек] (http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts- высота) –

ответ

1

В первую очередь получить texts as NSArray и Назначают его в качестве временного в UITextView, так что вы получит Высота ячейки:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     CGRect frame; 
     // set the height here, According to the NSArray of text 
     if(textView || section) 
     UITextView *tempTxtView = [[UITextView alloc] init]; 
     tempTxtView.text = // Add the Text of index according to the Section 
     // Fit the UITextView to the Content 
     frame = tempTxtView.frame; 
     frame.size.height = tempTxtView.contentSize.height; 
     tempTxtView.frame = frame; 
    }  
    return frame.size.height; 
} 

Однажды получил UITableViewCell height: Тогда не нужно беспокоиться об этом, верно?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
// I initialize every cell here with my ArrayContainer, nothing much to refer here. 

self.textView = [[UItextView alloc] initWithFrame:CGRectMake(cell.frame.origin.x +20, cell.frame.origin.y +10, cell.frame.size.width - 20, cell.frame.size.height - 20)]; 

// ....... Do further with the NSArray of Text 


} 

Примечание: Я не проверял, его просто мысль. Надеюсь, что это поможет вам

0
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     CGSize titlesize = [TxtValue.text sizeWithFont:[UIFont fontWithName:appdel.strFont size:25.0f] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; /// ----- -set width as per your requirement inplace of 300 

     return titlesize.height+10; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

} 
7
  1. Выполните этот ответ: Link reference

  2. Добавить ограничение высоты для вашего UITextView и создать выход для пользовательского класса клеток.

  3. Использования sizeThatFits: на UITextView, чтобы получить размер, который соответствует содержанию и установить это значение в качестве constant от ограничения, описанного в пункте 2. Делайте это в tableView:heightForRowAtIndexPath:.

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

+0

Не работает для меня – Spail

+0

@Spail: можете ли вы проверить, вернёт ли правильный размер от вызова 'sizeThatFits:'? –

+0

Да, размер возвращен, как ни странно. его ширина больше, чем должна быть. можете ли вы разместить свой код для этого? – Spail

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