删除在过渡期间实现UIScrollView Album的故障



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

-(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);
}

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

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

尝试使用时间探查器和动画探查器分析代码以查找瓶颈。

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

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

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

最新更新