iphone - 消除过渡期间实现 UIScrollView 相册时出现的故障

标签 iphone ios uiscrollview uiscrollviewdelegate

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

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

最佳答案

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

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

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

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

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

关于iphone - 消除过渡期间实现 UIScrollView 相册时出现的故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447109/

相关文章:

ios - 归档时应用程序获取 "Undefined symbols for architecture armv7",除非我不在库中删除链接产品

ios - UICollectionView嵌套时设置ScrollView高度问题

iphone - iPhone 应用程序的声音格式

ios - 查询的 iTunes 搜索 API 页码

ios - iOS 客户端/服务器应用程序

ios - 如何更改标准 UITabBarItem 上的文本 'More'

ios - 分页 ScrollView 上的中心元素

ios - 设置 UIScrollView 缩放比例以适应屏幕

iphone - remoteControlReceivedWithEvent 从未调用过

iphone - 2个 Storyboard之间的过渡