【问题标题】:iPhone UIScrollView how to properly zoom the view? Currently it's height is not adjusted properlyiPhone UIScrollView 如何正确缩放视图?目前它的高度没有正确调整
【发布时间】:2012-02-04 16:11:35
【问题描述】:

我在 UIScrollView 中有一个 UITableView。我花了很多功夫才能让它发挥作用。

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

我遇到了这个问题: 如果我将 scrollView 的最小缩放比例设置为 0.5,tableview 的宽度现在会填满屏幕,但它的高度只有屏幕的一半。 我希望表格视图在缩小到 0.5 时显示更多行。

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

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

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

PS。我正在从 viewForZooming 返回 tableview:UIScrollView 的方法

【问题讨论】:

  • 您知道UITableView 已经UIScrollView 的子类吗?您是否尝试过单独使用 UITableView,而不是在另一个 UIScrollView 中执行此操作?
  • 是的,我知道这一点。让表格视图水平滚动是一件很痛苦的事情,我很高兴有一个可以正常工作的设置。
  • 我会建议你使用tableView的transform属性。您将不需要使用 scrollView。

标签: iphone objective-c uitableview uiscrollview


【解决方案1】:

你想要达到的目标非常困难。

解决方案 1 此解决方案使用您拥有的确切设置(UIScrollView 中的 UITableView)。

您说当您将 zoomScale 设置为 0.5 时,您希望表格视图垂直填充滚动视图。在 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 的帧大小。

这只会改变表格的框架,不会改变单元格的高度。这意味着当您缩小时,您还会在表格视图中看到更多单元格。

解决方案 2 仅使用 UITableView

UITableView 是 UIScrollView 的子类。这意味着它可以缩放和滚动。

从 UITableView 开始,它具有您想要在屏幕上显示的大小。然后,在加载内容后修改 contentSize 并使其比您的框架宽度更宽。这应该启用水平滚动。

但是,UITableViewCells 的框架会自动设置为 tableview 框架的宽度。您可以通过使用自定义 UITableViewCell 和 clipsToBounds=false 绕过此问题。在其中,您将插入一个 UIView,其框架设置为您想要的宽度和高度,并且没有 autoresizingMask。当 tableview 将调整 UITableViewCell 框架的大小时,这不会影响您的内部 UIView。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2015-12-12
    相关资源
    最近更新 更多