我在UIScrollView中有一个UITableView。它让我付出了很多努力。
tableView是640x350 ,我使用滚动视图从单元格的一端滚动到下一个。 滚动视图为320x350。 滚动视图的内容大小为640x350
我遇到了这个问题: 如果我将scrollView的最小缩放比例设置为0.5,则tableview的宽度现在填充屏幕,但它的高度仅为屏幕的一半。 当我缩小到0.5时,我希望tableview显示更多行。
首先,我想了解这是正确的行为,还是我的tableView内容大小和帧操作的结果。 tableview具有在界面构建器中设置的所有弹簧和支柱,并且应填充可用的框架。这是我第一次尝试放大几个月,我不记得它如何用于缩放。
有人可以帮助我了解我需要调整的位置和内容吗?
据我所知,我需要将代码放入scrollViewDidZoom:
,以操纵tableView的框架和内容大小。
PS。我将从viewForZooming:UIScrollView方法返回tableview
答案 0 :(得分:1)
你想要实现的目标非常困难。
解决方案1 此解决方案使用您拥有的精确设置(UIScrollView中的UITableView)。
您说当您将zoomScale设置为0.5时,您希望表视图垂直填充scrollView。在0.5时,您的表格视图必须 640x700 ,以便根据需要填充UIScrollView。为此,在scrollViewDidZoom:
上,您必须将表格视图的框架调整为 640x700
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
// No matter what the zoomScale is, the tableView will be zoomed accordingly
// Only zoom the height of the table
tableView.frame = CGRectMake(0, 0, 640, 350 / zoomScale);
// Also, update the contentSize
scrollView.contentSize = CGSizeMake(640, 350 / zoomScale);
}
如果您为zoomScale = 0.5
运行上面的代码,您将获得 640x700 的帧大小。
这只会更改表格的框架,而不会更改单元格的高度。这意味着在缩小时,您还会在tableview中看到更多单元格。
解决方案2 仅使用UITableView
UITableView是UIScrollView的子类。这意味着它可以缩放和滚动。
从UITableView开始,其大小与屏幕上所需的大小相同。然后,在加载内容后,修改contentSize并使其宽度超过帧宽。这应该启用水平滚动。
但是,UITableViewCells的框架自动设置为tableview框架的宽度。您可以使用clipsToBounds=false
使用自定义UITableViewCell来绕过此问题。在它内部,你将插入一个UIView,框架设置为你想要的宽度和高度,没有autoresizingMask。当tableview将调整UITableViewCell框架的大小时,这不会影响你的内部UIView。