【问题标题】:what is the best way to get dynamic height of UITableView?获取 UITableView 动态高度的最佳方法是什么?
【发布时间】:2016-03-01 10:11:12
【问题描述】:

我正在以编程方式创建 UITableView。我根据内容保持单元格大小动态。所以最后我想通过使用 tblPackage.rowHeight 检查 tableview 高度(最终是单元格大小乘以单元格数)大于屏幕高度。我在 cellForRowAtIndexPath 中计算 tblPackage.rowHeight。但是我没有在代码中获得动态行高,因为在执行此代码后会调用 tableview 委托方法。这是我的工作:

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;
        }
    }

【问题讨论】:

  • 你的 iOS 版本目标是什么?

标签: ios objective-c uitableview


【解决方案1】:

对于 TableviewCell 动态高度

设置

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

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

【讨论】:

  • 您能否更具体地了解这些行的作用? UITableViewAutomaticDimension 会给我每个单元格的行高吗?因为我在使用 tableview.rowHeight 条件后调用的 cellForRowAtIndexPath 中计算单元格大小
  • UITableViewAutomaticDimension 会根据单元格内容返回每一行的高度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
相关资源
最近更新 更多