我的滚动视图遇到问题(水平,启用分页,可以是50页或更多) 我想要做的是,当用户水平滚动时,将内容加载到scrollView的内容视图上(因为最初加载所有内容都需要很长时间)。
我所做的是: 每当scrollViewDidScroll发生时,我都会检查是否需要加载其他内容。如果是,则创建一个新的“页面”并将其添加到正确位置的scrollViews内容视图中。
问题是: 当它预加载页面时,“滚动运动”受到干扰。屏幕没有完全闪烁,但滚动动画的平滑性受到严重影响。
代码中的:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self preLoadPageNumber:self.currentPageIndex + 2];}
-(void)preLoadPageNumber:(int)pageNumber{
NSMutableArray *tmpMovies;
VoDPage *pageView;
if(pageNumber < [self getAmountOfPages])
{
pageView = [pageViewControllers objectAtIndex:pageNumber];
if((NSNull*)pageView == [NSNull null])
{
tmpMovies = [[NSMutableArray alloc] initWithCapacity:6];
for(int o = ((pageNumber) * 6); o < ((pageNumber+1)*6); ++o)
{
@try {
[tmpMovies addObject:[movies objectAtIndex:o]];
}
@catch (NSException * e) {
break;
}
}
pageView = [[VoDPage alloc] initWithContent:tmpMovies andNavCtrl:navCtrl];
pageView.view.frame = CGRectMake(((pageNumber) * 320)-8 , 0, 320, 332);
if(editModeEnabled)
[pageView enableEditMode];
[scrollView addSubview:pageView.view];
[pageViewControllers replaceObjectAtIndex:pageNumber withObject:pageView];
}
}
}
可能我必须在这里进行一些设计更改。我相信你们中有些人过去也遇到过类似的问题。 非常感谢任何帮助/ tipps或链接
提前感谢您的帮助
SAM
答案 0 :(得分:0)
好的,我有点想出了解决问题的方法。
我将preLoadPageNumber-方法更改为:
-(void)preLoadPageNumber:(NSNumber*)param
只是因为我在ScrollViewDidScroll中调用了一个helper方法,并且说helperMethod看起来像这样:
-(void)performPreLoadAfterDelay
{
[self performSelector:@selector(preLoadPageNumber:) withObject:[NSNumber numberWithInt:self.currentPageIndex +1] afterDelay:0.001];
}
在滚动速度非常快(“空白”页面出现)时,从ScrollViewDidScroll方法中调用performSelector不起作用。 我真的不知道为什么,但是helperMethod的技巧奏效了。 Annimation现在很流畅,“空白页”问题消失了。