我这里有两个主要问题。
我的第一个问题是我需要在具有响应式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
但绘制到上下文并返回图像对我来说不是一个选项,因为我需要这些子视图以保持对触摸的响应。