在没有UI的情况下向UIScrollview添加许多(最多1000个)UIViews会被阻止

时间:2014-08-14 12:27:58

标签: objective-c uiscrollview

我这里有两个主要问题。

我的第一个问题是我需要在具有响应式UI的UIScrollView上创建很多UIViews(取决于用户选择),然后即使有这么多的UIViews也应该能够顺利地做出反应。

对于第二个问题,一些提示就足够了。什么花费了大量的CPU能力以及如何防止它,所以滚动仍然会很顺利。

对于第一个问题,这是我的描述:

层次结构是: UIScrollview - >填充内容的BackgroundView - >代表容器的子视图 - >这个容器中有很多子视图。

我正在启动一个线程并进行计算,其中每个子视图将被创建并保存到NSMutableArray。

为了说明,这里有一些伪代码:

-(void)threadFunction {
    NSMutableArray *UIViewArray = [NSMutableArray new];
    [self performSelectorOnMainThread:@selector(threadIsReady:) withObject:[UIViewArray copy] waitUntilDone:YES];    
}  
-(void)threadIsReady:(NSArray *)threadArray ]{  
    for (addSubview : threadArray [i]) //->very  slow  
}   

我也使用了这个循环的调度程序,但是这个绘画花了20倍的时间,只是等待片刻没有响应的UI。

当我到处阅读时,UI绘图应该发生在主线程中。但那怎么办呢。

我查看了这个主题: Building up UIViews on background thread

但绘制到上下文并返回图像对我来说不是一个选项,因为我需要这些子视图以保持对触摸的响应。

0 个答案:

没有答案