0

已经实现了一个 UIScrollView 相册,其中 +2 和 -2 定位的子视图在scrollViewDidEndDragging被调用时生成,但添加子视图是一项昂贵的操作,因此滑动不是那么顺利。拖动结束时屏幕有点卡住。我什至尝试过使用NSTimeror延迟调用,performSelector但如果用户快速滑过所有图像,那么所有延迟调用都会立即调用,有时会导致应用程序崩溃。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    flyNumber = (NSInteger)(imageScrollView.contentOffset.x/imageScrollView.frame.size.width);
    [self createM2P2SubView];

    //[self performSelector:@selector(createM2P2SubView) withObject:nil afterDelay:0.1];
    //[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(createM2P2SubView) userInfo:nil repeats:NO];

    NSLog(@"End dragging   ...... %d",flyNumber);
}

请提供解决方案以消除该故障。

4

1 回答 1

1

创建视图是一项昂贵的操作,但这本质上就是表视图所做的。它会在新单元格出现在屏幕上时动态创建视图,并且它会重用视图,因为它们的创建成本很高。

尝试使用 Time Profiler 和 Animation Profiler 分析您的代码以找到瓶颈。

尝试重用您在 +2/-2 偏移处插入的视图以加快速度。

还有一个巧妙的技巧是使用 UITableView 而不是自我管理的 UIScrollView。如果您需要它是水平的,那么只需对表格视图应用旋转变换。

由于您提到“专辑”一词是您的标题,我假设每个视图都需要加载和显示图像?我不会使图像加载同步,而是使其异步并使用微调器或其他东西为相册图像加载状态提供指示器。

于 2012-09-16T18:18:18.277 回答