UIScrollview重置内容

时间:2013-02-27 17:59:57

标签: objective-c uiscrollview

我有一个UIScrollview包含默认高度为1717px的数据,在运行时我必须添加一个或多个子视图,每个子视图的高度为540px。事先不知道有多少人必须加入。

我将这些添加到viewdidload方法的滚动视图中,然后将contentsize设置为正确的值。我还将contentize设置为我需要的任何值。如果我在方法结束时记录它一切都很好,contentsize仍然正确。

一旦显示contentsize已恢复为1717px,内容仍然存在。如果我滚动到uiscrollview的正常范围之外,我可以查看添加的内容,但它会反弹回来。

viewdidload的相关部分位于

之下
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"counter" ascending:YES]];
for (Facade * f in [self.inspection.facades sortedArrayUsingDescriptors:sortDescriptors]) {
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"facadeView" owner:self options:nil];
    facadeView *facadeInfo = [subviewArray objectAtIndex:0];
    facadeInfo.facade = f;
    facadeInfo.frame = CGRectMake(0, self.scrollView.frame.size.height, facadeInfo.frame.size.width, facadeInfo.frame.size.height);
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);
    self.scrollView.frame =  CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);
    [self.scrollView addSubview:facadeInfo];
}
self.scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);;
// now add our scroll view to the main view
[self.view addSubview:self.scrollView];

如何阻止contentsize重置为原始值?

3 个答案:

答案 0 :(得分:1)

viewDidAppear而不是viewDidLoad中尝试此代码。

答案 1 :(得分:0)

我认为

self.scrollView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);

for循环中的

是问题所在。你不需要增加框架大小。如果你这样做你就不能滚动。 contentsize必须小于帧大小。如果不是这样滚动视图不能滚动。

答案 2 :(得分:-1)

autoLayout存在问题。禁用自动布局,它将正常工作!!!: - )