2012-01-07 53 views
3

我在UIScrollView中有一个UITableView。我花了相当多的工作来完成它。iPhone UIScrollView如何正确缩放视图?目前它的高度调整不正确

tableView是640x350,我使用滚动视图从单元格的一端滚动到下一个。 滚动视图是320x350。 滚动视图的内容大小为640X350

我运行到这个问题: 如果我设置滚动视图的最低变焦倍数为0.5,在tableview中的宽度现在填满整个屏幕,但它的高度只有半个屏幕。 我希望tableview在缩小到0.5时显示更多的行。

首先我想了解,如果这是正确的行为,或我的tableView的内容大小和框架操纵的结果。 tableview在界面构建器中设置了所有的弹簧和支柱,并且应该填充可用的框架。这是我第一次尝试缩放几个月,我不记得它如何与缩放工作。

有人可以帮助我了解我需要调整的地点和内容吗?

据我所知,我需要将代码放入scrollViewDidZoom:,这将操纵tableView的框架和内容大小。

PS。 I“m距离viewForZooming返回实现代码如下:UIScrollView的

+1

您是否知道'UITableView'已*是'UIScrollView'的子类?你是否尝试过使用'UITableView'本身而不是另一个'UIScrollView'? – 2012-01-07 00:26:01

+0

是的,我知道这一点。制作表格视图水平滚动是一大痛苦,我很高兴有一个工作的设置。 – 2012-01-07 00:42:07

+0

我会建议你使用tableView的transform属性。你将不需要使用scrollView。 – fibnochi 2012-02-09 10:50:17

回答

1

的方法是什么,你正在努力实现是相当困难

解决方案1 ​​该解决方案使用你有确切的设置(UITableView的里面的UIScrollView)

你说当你设置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框架的宽度。你可以通过使用自定义的UITableViewCell来绕过这个,使用clipsToBounds=false。在它里面,你将插入一个UIView,框架设置为你想要的高度&并且没有autoresizingMask。当tableview将调整UITableViewCell框架的大小时,这不会影响你的内部UIView。