Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 消除过渡期间实施UIScrollView相册时出现的问题_Iphone_Ios_Uiscrollview_Uiscrollviewdelegate - Fatal编程技术网

Iphone 消除过渡期间实施UIScrollView相册时出现的问题

Iphone 消除过渡期间实施UIScrollView相册时出现的问题,iphone,ios,uiscrollview,uiscrollviewdelegate,Iphone,Ios,Uiscrollview,Uiscrollviewdelegate,已经实现了一个UIScrollView相册,其中在调用ScrollViewDiEndDraging时会生成+2和-2定位的子视图,但是添加子视图是一个代价高昂的操作,因此滑动过程不是很顺利。拖动结束时,屏幕有点粘。 我甚至尝试过使用NSTimer或performSelector延迟调用,但如果用户快速浏览所有图像,则会立即调用所有延迟调用,有时会导致应用程序崩溃 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDece

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

请提供一个解决方案来消除这个问题。

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

尝试使用时间分析器和动画分析器分析代码,以找到瓶颈

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

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

既然你提到了“相册”这个词就是你的标题,我假设每个视图都需要加载和显示一些图像?与同步加载图像不同,我将使其异步,并使用微调器或其他工具为相册图像加载状态提供指示器