2016-03-01 4 views
-1

Я создаю UITableView программно. Я сохраняю динамику ячейки по содержанию. Поэтому в конце я хочу проверить высоту таблицы (в конечном счете, размер ячейки умножается на номера ячеек) больше высоты экрана, используя tblPackage.rowHeight. Я вычисляю tblPackage.rowHeight в cellForRowAtIndexPath. Но я не получаю динамическую высоту строки здесь, в коде, так как после выполнения этого кода вызываются методы делегата tableview. Вот что я делаю:Каков наилучший способ получить динамическую высоту UITableView?

tblPackage = [[UITableView alloc] initWithFrame:CGRectMake(5, 50.5, viewPackage.frame.size.width - 10, viewPackage.frame.size.height -70) style:UITableViewStylePlain]; 

[viewPackage addSubview:tblPackage]; 
tblPackage.delegate = self; 
tblPackage.dataSource = self; 

[tblPackage setFrame:CGRectMake(tblPackage.frame.origin.x, tblPackage.frame.origin.y, tblPackage.frame.size.width,(tblPackage.rowHeight * ([arrayTiers count])))]; 


    NSLog(@"screen height: %f",SCREEN_HEIGHT); 
    if (tblPackage.frame.origin.y + 70 + tblPackage.frame.size.height > SCREEN_HEIGHT - 11) 
    { 
     if ([[[arrayCatInfo objectAtIndex:segIndex] valueForKey:@"allow_skip"] isEqualToString:@"true"]) 
     { 
      UIButton *btnSkipPackage = [[UIButton alloc]initWithFrame:CGRectMake(15, tblPackage.frame.size.height + 45 + 50.5, viewPackage.frame.size.width - 30, 35)]; 
      btnSkipPackage.backgroundColor = [UIColor lightGrayColor]; 
      [btnSkipPackage setTitle:[NSString stringWithFormat:@"Opt out of %@", [[arrayCatInfo objectAtIndex:segIndex] valueForKey:@"name"]] forState:UIControlStateNormal]; 
      [btnSkipPackage addTarget:self action:@selector(skipCategory:) forControlEvents:UIControlEventTouchUpInside]; 
      [viewPackage addSubview:btnSkipPackage]; 

      CGRect frameRect = viewPackage.frame; 
      frameRect.size.height = SCREEN_HEIGHT - 6 - 70; 

      viewPackage.frame = frameRect; 

     } 
     else 
     { 
      [tblPackage setFrame:CGRectMake(tblPackage.frame.origin.x, tblPackage.frame.origin.y, tblPackage.frame.size.width, SCREEN_HEIGHT - 11 - 70 - 50.5)]; 

      CGRect frameRect = viewPackage.frame; 
      frameRect.size.height = SCREEN_HEIGHT - 6 - 70; 

      viewPackage.frame = frameRect; 

      tblPackage.scrollEnabled = TRUE; 
     } 
    } 
+0

Какова ваша версия целевой IOS? – EridB

ответ

0

Для TableviewCell динамической высоты

набор

_tableView.estimatedRowHeight = 100.0; 
_tableView.rowHeight = UITableViewAutomaticDimension; 

https://stackoverflow.com/a/35055320/5085393

+0

Вы можете уточнить, что делают эти строки? будет ли UITableViewAutomaticDimension получить высоту строки каждой ячейки? потому что я вычисляю размер ячейки в cellForRowAtIndexPath, который вызывается после того, как я использую условие tableview.rowHeight –

+0

UITableViewAutomaticDimension вернет каждую высоту строки в соответствии с содержимым в ячейке –

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