Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使UIScrollView垂直滚动,其中包含大量动态子视图?_Ios_Objective C_Loops_Uiview_Uiscrollview - Fatal编程技术网

Ios 如何使UIScrollView垂直滚动,其中包含大量动态子视图?

Ios 如何使UIScrollView垂直滚动,其中包含大量动态子视图?,ios,objective-c,loops,uiview,uiscrollview,Ios,Objective C,Loops,Uiview,Uiscrollview,所以我有一个UIScrollView,在其中,我想添加一些子视图,目前我有大约5或6个,它们的高度约为90px,所以很明显,当它到达屏幕底部时,我希望它滚动,以便您可以看到更多,如果有意义的话 下面是我已经拥有的,parentView是UIScrollView,newResult是我想附加的一行GSResultBlock是扩展UIView的类 for (NSObject * person in resultsCollection) { CGRect resultBlockFr

所以我有一个
UIScrollView
,在其中,我想添加一些子视图,目前我有大约5或6个,它们的高度约为
90px
,所以很明显,当它到达屏幕底部时,我希望它滚动,以便您可以看到更多,如果有意义的话

下面是我已经拥有的,
parentView
UIScrollView
newResult
是我想附加的一行
GSResultBlock
是扩展
UIView
的类

    for (NSObject * person in resultsCollection) {
      CGRect resultBlockFrame   = CGRectMake(0, resultCount, parentView.bounds.size.width, 90);
      GSResultBlock * newResult = [[GSResultBlock alloc] initWithFrame:resultBlockFrame];

      [parentView addSubview:[newResult getResultBlock]];

      [newResult release];

      resultCount = resultCount + 95;
}
请记住,foreach
newResult
中还会有其他子视图,例如,
UIImageView
etc。。(但上述代码中未包含这些内容)


有什么想法吗?提前感谢。

您需要使用以下方法更新
UIScrollView
contentSize

[parentView setContentSize:CGSizeMake(CGRectGetWidth(parentView.frame), resultCount)];
在for循环结束后。

查看


将所有视图放入滚动视图后,运行此操作,滚动视图的滚动量将正确

您正在寻找此选项吗
setContentOffset:animated:
我不太确定,也许我该如何使用它?这是
UIScrollView
的一种方法。你通过
CGPoint
它会滚动到那个点。我试了一下,但它只滚动一次,然后它就静止不动了。当你在滚动视图中添加新视图时,你也应该增加滚动视图的contentSize。他不需要运行那个循环。他已经计算了内容的大小,并存储在
resultCount
中。啊,我明白了,不确定他问的是什么。我认为你的想法是正确的,按照你的建议设置内容大小应该可以解决@harry lawrence的问题。我只是说,他不需要去重新计算内容高度,因为他已经在他在问题中发布的代码中计算过了。
float maxHeight = 0;

for(UIView *v in [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+5);