已经实现了一个 UIScrollView 相册,其中 +2 和 -2 位置的 subview 在调用 scrollViewDidEndDragging
时生成,但添加 subview 是一项昂贵的操作,因此滑动不是很顺利。拖动结束时屏幕会有点卡住。
我什至尝试过使用 NSTimer
或 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);
}
请提供消除该故障的解决方案。
最佳答案
创建 View 是一项昂贵的操作,但这本质上就是 TableView 的作用。当新单元格出现在屏幕上时,它会动态创建 View ,并且它会重用这些 View ,因为创建它们的成本很高。
尝试使用时间分析器和动画分析器分析您的代码以查找瓶颈。
尝试重用在 +2/-2 偏移处插入的 View 以加快速度。
还有一个巧妙的技巧是使用 UITableView 而不是 self 管理的 UIScrollView。如果您需要它是水平的,那么只需对表格 View 应用旋转变换即可。
既然您提到“相册”这个词是您的标题,我假设每个 View 都需要加载和显示图像?我不会使图像加载同步,而是使其异步,并使用微调器或其他东西为专辑图像加载状态提供指示器。
关于iphone - 消除过渡期间实现 UIScrollView 相册时出现的故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447109/