如何动态设置scrollView的内容大小

时间:2013-05-29 11:09:18

标签: iphone ios objective-c uitableview uiscrollview

我有一个scrollView,在该scrollView上,我有很多标签和textView以及一个tableView。当没有时,scrollView工作正常。 tablView中的行数较少,但如果tableView有更多的行数,那么我无法获得完整的内容,甚至我在tableView中丢失了大量信息,因为tableView不可滚动。我添加了所有的标签,textView和tableView作为scrollview的子视图。任何人都可以帮助我,所以我可以获得完整的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);

3 个答案:

答案 0 :(得分:2)

tableview是一个滚动视图子类,通常Apple称将其添加到另一个滚动视图会导致问题。那说有办法让它发挥作用。在这里或谷歌搜索“如何在uiscrollview中放置uitableview”这样的术语。

编辑:要使其不可滚动,您可以在表视图上放置一个透明视图来停止或触发触摸事件。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

self.scrollingView.contentSize = CGSizeMake(320372);

试试这个。