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