3

我正在从非 ui 线程/函数在 uiscrollview 上绘制一组图像。但它仅在所有图像完成绘制后显示。为了绘制所有图像,我编写了一个函数,这就是所谓的非 ui 线程。我确实在函数内写了这一行

[self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO];

并编写了如下所示的函数

- (void)updateUI
{
[myScrollView setNeedsDisplay];
}

但即使我可以看到控件被传递给该函数,它也没有任何效果。现在做什么?

4

4 回答 4

3

根据我的经验,所有绘图操作都必须在 UI 线程上执行,即使它们不可见,甚至在您执行它们时添加到视图层次结构中。不过,如果您找到解决方法,我很想知道:-)

于 2010-01-13T14:21:57.353 回答
1

好的,我有一个解决方案。即使我不喜欢该解决方案,它也能完美运行。我像这样改变了我的功能。

- (void)updateUI
{
 for(UIView *subview in [myScrollView subviews]) 
 {
  [myScrollView bringSubviewToFront:subview];   
 } 
}
于 2010-01-14T07:06:18.827 回答
0

也许你也应该打电话setNeedsLayout和/或layoutIfNeeded

于 2010-01-13T16:40:12.237 回答
0

尝试类似的东西performSelectorOnMainThread:withObject:waitUntilDone:

于 2010-01-13T23:49:51.777 回答