我使用自定义UITableview
创建了UITableViewCell
。UITableViewCell
包含UILabels
,我根据单元格高度计算了每个单元格的高度。但是如何才能我得到了tableview高度?因为基于tableView的高度我需要计算
scrollView的高度
单击按钮时,我创建了UITableView
这样的内容:
-(IBAction)btnClicked:(id)sender
{
self.tableView=[[UITableView alloc] initWithFrame:CGRectMake(0,150,327,[arr5 count]*205) style:UITableViewStylePlain];
self.tableView.delegate=self;
self.tableView.dataSource=self;
self.tableView.scrollEnabled = NO;
[self.view addSubview:self.tableView];
float fscrview = 150 + self.tableView.frame.size.height + 20;
testscroll.contentSize=CGSizeMake(320, fscrview);
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *city1 = city.text;
UIFont *font = [UIFont fontWithName:@"Helvetica" size:14.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize bounds = [city1 sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//similarly calculated for all
return (CGFloat) cell.bounds.size.height + bounds.height+bounds1.height+bounds2.height+bounds3.height+bounds4.height+bounds5.height;
}
我能够通过这个获得tableViewCells的高度。在此之后我如何计算/设置tableView的整体高度?
如何根据tableView的行/高度计算ScrollView的高度?
答案 0 :(得分:12)
使用contentSize.height
的{{1}}属性。
我认为你想要用内容大小设置整个tableview,然后设置与UITableView
相关的滚动视图大小相关内容,以下用于代码......
在UITableView
中添加数据或reloadData
后,只需设置以下代码..
UITableView
<强>更新强>
yourTableView.frame = CGRectMake(yourTableView.frame.origin.x,yourTableView.frame.origin.y, yourTableView.frame.size.width, yourTableView.contentSize.height);
float ftbl = yourTableView.frame.origin.y + yourTableView.contentSize.height + 15;
yourScrollView.contentSize=CGSizeMake(320, ftbl);
答案 1 :(得分:3)
获取UITableView高度的最简单方法
- (CGFloat)tableViewHeight
{
[tblData layoutIfNeeded];
return [YOUR_TABLE_NAME contentSize].height;
}
答案 2 :(得分:2)
试试这个:tableView.backgroundView.bounds.size.height
应该工作
<强>逻辑:强>
UITableView
有一个属性,backgroundView
是&#34;表格视图的背景视图会自动调整大小以匹配表格视图的大小。&#34; backgroundView
是UIView
,其bounds
属性为CGRect
,&#34;定义视图的大小和位置。&#34; CGRect
有一个size
属性,size
有一个height
属性QED
答案 3 :(得分:2)
在iOS 8+上,这可以获得表格视图高度
CGFloat tableViewHeight = tableView.bounds.size.height;
答案 4 :(得分:0)
您还可以使用KVO来观察者表视图的contentSize属性,并调整其他视图中所需的内容。
将其放在某个地方,例如在viewDidLoad中:
[self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionInitial context:nil];
然后实施观察者:
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (object == self.tableView) {
self.scrollViewHeightConstraint.constant = self.tableView.contentSize.height;
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}