2010-01-13 53 views
3

我从非UI线程/函数在uiscrollview上绘制一组图像。但是只有在所有图像完成绘制后才显示它。为了绘制所有的图像,我写了一个函数,这就是所谓的非UI线程。我写这条线的功能如何从非UI线程/函数(iPhone)强制更新UIScrollView的屏幕

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

内,已经写了以下功能

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

给出但没有效果,甚至当我可以看到控制传递给函数的。现在做什么?

回答

1

好的,我有一个解决方案。即使我不喜欢解决方案,它的工作也很完美。我改变了我的功能。

- (void)updateUI 
{ 
for(UIView *subview in [myScrollView subviews]) 
{ 
    [myScrollView bringSubviewToFront:subview]; 
} 
} 
3

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

+0

另一件事是,如果我只是在主线程(即scrollview)做一些动作,我能够看到他们每个都被加载。但问题是,我不能告诉用户一直移动屏幕以查看它加载。:) – wolverine 2010-01-13 14:48:01

+0

“或甚至添加到视图层次结构”这对我来说很关键,谢谢! – 2012-03-09 03:45:26

0

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

+0

做了两个,也在组合,但没有用。有人帮助我PLzz ... – wolverine 2010-01-14 06:04:52

0

尝试类似performSelectorOnMainThread:withObject:waitUntilDone:

+0

但我已经尝试过了,你可以在上面的代码中看到它。 – wolverine 2010-01-14 03:32:55

+0

Doh。昨晚一定熬夜太晚..... – Nimrod 2010-01-14 16:43:44