我有一个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
重置为原始值?
答案 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);
是问题所在。你不需要增加框架大小。如果你这样做你就不能滚动。 contentsize必须小于帧大小。如果不是这样滚动视图不能滚动。
答案 2 :(得分:-1)
autoLayout存在问题。禁用自动布局,它将正常工作!!!: - )