【问题标题】:how to set the content size of a scrollView Dynamically如何动态设置滚动视图的内容大小
【发布时间】:2013-05-29 11:09:17
【问题描述】:

我有一个scrollView,在那个scrollView 上,我有许多标签和textView 以及一个tableView。当没有时,scrollView 工作得很好。 tablView 中的行数较少,但如果 tableView 有更多的行数,那么我无法完整内容,甚至我在 tableView 中丢失了很多信息,因为 tableView 不可滚动。我已将所有标签、textView 和 tableView 添加为滚动视图的子视图。任何人都可以帮助我,这样我就可以获得完整的 tableView 并使其正确可滚动。

这是我设置 scrollView 内容大小的代码。

float maxHeight = 0;

    for(UIView *v in [self.scrollView subviews]){
        if(v.frame.origin.x + v.frame.size.height > maxHeight)
            maxHeight = v.frame.origin.x + v.frame.size.height;
    }

    self.scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width, maxHeight+100);

【问题讨论】:

  • 你为什么要在最大高度上加 1000?
  • 代码似乎没问题,但这不起作用,那么问题必须是在调用此代码时撒谎
  • 你能把截图发给我的朋友吗??
  • 你想要一张截图。一个不完整的 tableView 还是别的什么??
  • 请注意,您应该使用v.frame.origin.y,而不是v.frame.origin.x

标签: iphone ios objective-c uitableview uiscrollview


【解决方案1】:

首先,您需要调整表格的大小,使其适合所有行(正如您所说,它不可滚动)。我相信这样做会使你的所有行都不能重用,所以如果它是一个大表,你可能会遇到性能问题。还要注意@David H 的回答,所以如果你真的想这样做,你最好使用另一个UIScrollView 而不是UITableView(这两种方式都不会带来太多好处)。

其次,您需要将所有视图移到 tableview 下方,这样它们就不会重叠。一种简单的方法是将这些视图放在不同的视图中,这样您只需要移动一个视图(但在这种情况下,您还需要相应地调整该视图的大小)。

最后,不是循环遍历所有scrollview 的子视图,而是应该很容易跟踪最接近底部的视图(这取决于您如何生成视图并将其添加到滚动视图)。

【讨论】:

  • 对于第一个建议,我不明白如何使用 scrollView 而不是 tableView。是不是可以将不可滚动的tableview放在scrollView的顶部。对于第二个建议,它之前是重叠的,但我启用了分页,所以现在它不重叠了..
  • 有可能,只是它不再具有UITableView 的一些好处,而且还可能导致一些问题。
【解决方案2】:

tableview 是一个滚动视图的子类,Apple 通常说将它添加到另一个滚动视图会导致问题。也就是说,有办法让它发挥作用。在此处或在 google 上搜索“如何将 uitableview 放入 uiscrollview”之类的术语。

编辑:为了使它不可滚动,您可以在停止或吃触摸事件的表视图上放置一个透明视图。

【讨论】:

  • 有没有办法将 tablview 放在 scrollView 上而不使 tableView 可滚动。?
  • 正如我上面建议的,自己做研究。使用正确的代码和技术,您几乎可以做任何事情。
  • 为了使其不可滚动,我只是禁用了从 tableView 的 IBoutlet 滚动。
【解决方案3】:

self.scrollingView.contentSize=CGSizeMake(320,372);

试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多