【问题标题】:Remove glitch in implementing UIScrollView Album during transition消除过渡期间实现 UIScrollView Album 的故障
【发布时间】:2012-09-08 22:51:04
【问题描述】:

已经实现了一个 UIScrollView 相册,其中 +2 和 -2 定位的子视图在调用 scrollViewDidEndDragging 时生成,但添加子视图是一项代价高昂的操作,因此滑动不是很流畅。拖动结束时屏幕有点卡住。 我什至尝试过使用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);
}

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

【问题讨论】:

    标签: iphone ios uiscrollview uiscrollviewdelegate


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 2015-10-17
      • 2012-05-31
      • 1970-01-01
      • 2012-11-24
      • 2020-11-18
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多