UITableView 在 iOS 7 中不根据其高度显示

Posted

技术标签:

【中文标题】UITableView 在 iOS 7 中不根据其高度显示【英文标题】:UITableView doesn't display based on its height in iOS 7 【发布时间】:2013-10-05 08:01:03 【问题描述】:

我有一个可展开的 UITableView,它可以在用户按下按钮时展开/折叠。 方法是我在按下按钮时更改其内容,并将 contentSize.height 分配给 tableview 的高度。它在 ios 6 中正常工作。

然而,在 iOS 7 中,无论我为 tableview 的高度设置什么值,它都显示为高度从未改变,新内容被截断。高度似乎坚持故事板中的原点高度。但是如果我打印tableview的高度,就是我设置的值。

这是我如何改变它的高度:

//Do some change to the content...
[tableview reloadData];
NSLog(@"height: %f, contentHeight: %f", tableview.frame.size.height, tableview.contentSize.height);// print height: 60, contentHeight: 160
CGRect frame = tableview.frame;
frame.size.height = tableview.contentSize.height;
tableview.frame = frame;
NSLog(@"height: %f, contentHeight: %f", tableview.frame.size.height, tableview.contentSize.height);// print height: 160, contentHeight: 160

有什么想法吗?

附言表格视图位于 UIScrollView 中。 (如果重要的话。)

【问题讨论】:

默认情况下,每个UITableView 都在UIScrollView 中。如果您手动添加了另一个,那么您真的不应该这样做。 你为什么把你的 UITableView 放在另一个 UIScolView 中?你真的需要吗?事实上,就像 Marko 所说,UITableView 已经继承自 UIScrollView,所以删除你的滚动视图容器可能会满足你的需求。 【参考方案1】:

我认为你的问题是滚动视图。 试试这样的:

CGRect screen = [[UIScreen mainScreen] bounds];
CGSize scrollViewContentSize = CGSizeMake(screen.size.width, screen.size.height);
[self.scrollView addSubview:tableview];
scrollViewContentSize.height += tableview.frame.size.height;
[self.scrollView setContentSize:scrollViewContentSize];
[self.view addSubview:self.scrollView];

【讨论】:

以上是关于UITableView 在 iOS 7 中不根据其高度显示的主要内容,如果未能解决你的问题,请参考以下文章

用于截取整个 UITableView 的代码在 iOS 13 中不再起作用

UITableViewCell 在大型 UITableView (Xcode, iOS) 中不可见时为 nil

iOS 7 UITableView:是错误还是我?

标签在 iOS 6 中显示文本,但在 iOS 7 中不显示

缩进在 UITableView ( ios6 ) 中不起作用

UITableView 的 UIRefresh 在 iOS 10 中不起作用